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

 
Previous Post S.E.S 농심 새우깡 CF 동영상 SES 슈; (화질 문제 있음)PHP 큰따옴표, 작은따옴표 표현 방법, 따옴표 차이점; Quotes구글 파일 검색법, 특정 확장자 파일만 검색 방법; Google File Search요도바시 카메라 일본 홈페이지 주소: Yodobashi Camera니콘 D40 D40X 카메라 케이스 종류와 포함 여부; Camera CaseC언어 나누기 함수 ?아무로 나미에 CF 광고 동영상; Namie Amuro자연로그 값 구하기; ln, Log숫자 한자 금액 壹, 貳, 參, 伍, 拾, 阡; 금액용 한문; Financial Ideog...리얼비디오(리얼미디어) 파일, 유튜브에 업로드 가능; YouTube RM RealMedia...

C언어 비트 연산] 특정 비트 읽기, 1비트씩 추출; Get a Bit, Read a Bit

Saturday, June 16, 2007

부호없는 16비트 정수 즉 "unsigned short"형의 숫자에서, 특정 비트가 1인지 0인지를 알아내는 방법입니다. 다음의 getAbit(숫자, 몇번째비트) 함수를 사용하면 0또는 1을 반환합니다. C에는 2진수 출력 기능이 없기에, ushortToBinary() 라는 함수도 만들었습니다.

n번째 비트, 1인지 0인지 여부 판단 함수 예제


소스 파일명: example.cpp
#include <stdio.h>

int getAbit(unsigned short x, int n);
char *ushortToBinary(unsigned short i);


int main(void) {

  unsigned short num = 24761;
  printf("%s\n", ushortToBinary(num)); // 2진수로 출력
  // 출력 결과: 0110000010111001


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


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



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


  return 0;
}




// 지정한 정수에서, 몇번째 비트만 읽어서 반환하는 함수
int getAbit(unsigned short x, int n) { // getbit()
  return (x & (1 << n)) >> n;
}


// 16비트 정수를 2진수 문자열로 변환 함수
char *ushortToBinary(unsigned short i) {
  static char s[16 + 1] = { '0', };
  int count = 16;

  do { s[--count] = '0' + (char) (i & 1);
       i = i >> 1;
  } while (count);

  return s;
}



▶▶ C언어 비트 연산] 특정 비트 켜기 끄기 함수, Bit ON OFF; Set a Bit, Save a Bit

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