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

 
Sunday, May 06, 2007

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


복잡한 프로그램이나, 데이터베이스 등에서는 메모리를 절약하기 위해, 비트 단위로 자료를 저장하는 경우가 많습니다. 예를 들어 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 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top