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

 
Sunday, May 06, 2007

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


다음 예제는 정수에서, 지정한 몇번째 비트만 1, 또는 0 으로 설정하는 방법입니다.

setAbit(정수, n번째비트, 값)
의 형식입니다. 세번째 파라미터인 "값"은 0이나 1입니다.

16비트 정수, 지정 비트만 켜기/끄기 (ON/OFF) 설정


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

  my $num = 0;
  printf("%016b\n", $num);
  # 출력 결과: 0000000000000000


  # 0번 비트 (맨 우측 비트)를 1로 켜기
  printf("%016b\n", setAbit($num, 0, 1));
  # 0000000000000001



  print "\n\n";
  # 0000000000000000 에서, 차례로 1비트씩 켜기 (1로 ON)
  $num = 0;
  for (my $i = 15; $i >= 0; $i--) {
    my $temp = setAbit($num, $i, 1);
    printf("%016b = %10u\n", $temp, $temp);
  }


  print "\n\n";
  # 1111111111111111 에서, 차례로 1비트씩 끄기 (0으로 OFF)
  $num = 0xFFFF;
  for (my $i = 15; $i >= 0; $i--) {
    my $temp = setAbit($num, $i, 0);
    printf("%016b = %10u\n", $temp, $temp);
  }



# 정수 $x 의 $n번째 비트를, $b로 설정하는 함수
sub setAbit { # setbit()
  my $x = shift;
  my $n = shift;
  my $b = shift;

  return $x | (1 << $n) if ($b == 1);
  return $x & (~(1 << $n));
}


실행 결과 화면:
D:\Z>example.pl
0000000000000000
0000000000000001


1000000000000000 =      32768
0100000000000000 =      16384
0010000000000000 =       8192
0001000000000000 =       4096
0000100000000000 =       2048
0000010000000000 =       1024
0000001000000000 =        512
0000000100000000 =        256
0000000010000000 =        128
0000000001000000 =         64
0000000000100000 =         32
0000000000010000 =         16
0000000000001000 =          8
0000000000000100 =          4
0000000000000010 =          2
0000000000000001 =          1


0111111111111111 =      32767
1011111111111111 =      49151
1101111111111111 =      57343
1110111111111111 =      61439
1111011111111111 =      63487
1111101111111111 =      64511
1111110111111111 =      65023
1111111011111111 =      65279
1111111101111111 =      65407
1111111110111111 =      65471
1111111111011111 =      65503
1111111111101111 =      65519
1111111111110111 =      65527
1111111111111011 =      65531
1111111111111101 =      65533
1111111111111110 =      65534

D:\Z>



특정 비트 읽기 함수: ▶▶ Perl 펄 비트 연산] 특정 비트 읽기, 1비트씩 추출; Get a Bit, Read 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