컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post Perl 펄] printf 함수 %u %d 의미/뜻, unsigned int, signed...Perl 펄] 32비트 16진수 헥사(Hex) 난수; 32bit 2진수 Random(랜덤)...Mathematica Hello World, 매스매티카 헬로 월드 출력PHP, CLI 예제] Hello World! 출력 소스 코드; 헬로 월드PHP CLI 예제] 명령행 옵션, argc argv 매개 변수 구하기Perl 펄] 화면 지우기 함수, Clear Screen CLS리눅스/유닉스(Linux, Unix)에서 Perl(펄) 스크립트 실행 방법Vim Vi, 도스 텍스트를 유닉스 텍스트로 개행문자 변환; DOS CR-LF to Uni...Perl 펄] 운영체제(OS) 자동 판단 방법, 특수 변수로; Auto Detect Ope...Perl 펄] 두 변수의 값 교환/스왑 함수(서브루틴); Swap Function

Perl 펄 비트 연산] 특정 비트 읽기, 1비트씩 추출; Get a Bit, Read a Bit

Sunday, May 06, 2007

복잡한 프로그램이나, 데이터베이스 등에서는 메모리를 절약하기 위해, 비트 단위로 자료를 저장하는 경우가 많습니다. 예를 들어 32비트 정수형 변수 하나를 선언해 놓으면, 비트가 32개 있으니 32개의 불린형 자료를 한꺼번에 차곡차곡 저장할 수 있습니다. 이런 경우에, 저장한 데이터를 비트 단위로 읽는 방법입니다.

다음 예제 속의 getAbit(정수, n번째비트) 함수를 사용합니다.

16비트 정수에서 지정 비트만 구하기 예제


소스 파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;

  my $num = 24761;
  printf("%016b\n", $num); # 2진수로 출력
  # 출력 결과: 0110000010111001


  # 0번 비트 (맨 우측 비트) 읽기
  printf("%d\n", getAbit($num, 0));
  # 1


  # 1번 비트 (맨 우측에서 2번째 비트) 읽기
  printf("%d\n", getAbit($num, 1));
  # 0



  # $num을 1비트씩 읽어, 2진수로 출력하기
  print "\n[ ";
  for (my $i = 15; $i >= 0; $i--) {
    printf("%d", getAbit($num, $i));
  }
  print " ]\n";
  # [ 0110000010111001 ]



# 특정 정수에서, 몇번째 비트만 읽어서 반환하는 함수
sub getAbit { # getbit()
  return ($_[0] & (1 << $_[1])) >> $_[1];
}



특정 비트 쓰기 함수: ▶▶ Perl 펄 비트연산] 특정 비트 쓰기, 1비트씩 저장 함수; Set a Bit, Save a Bit

▶▶ Perl 펄 비트연산] 특정 비트 반전, 1비트씩 역전 함수; Reverse a Bit Function

▶▶ Perl 펄 비트연산] 특정 비트 개수 세기, 1인 비트, 0인 비트 수; Count Bits Function

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top