본문 바로가기

프로그래밍/기타

비트 연산

 char a=0xff, res;
 res = a >> 3;
 printf("%#x\n",res);
 
 unsigned char b=0xff, res1;
 res1 = b>>3;
 printf("%#x\n",res1);

0xffffffff  : signed는 sign bit로 채움.
0x1f      : unsigned는 0으로 채움.


printf 할 때 프린트버퍼에 먼저 들어가는 데, 4바이트 단위로 들어감.
1바이트 char를 넘길 때, 확장해서 넘김.
unsigned가 들어 갈 때, 확장 시 0으로 확장해서 0000001f 이므로 ,1f만 찍힘.

signed일 경우에는 sign bit로 확장. ffffff가 확장됨.