[英]bit shift in c language
我試過了:
#include<stdio.h>
main()
{
int a=10000;
unsigned char cp1=0,cp2=0,cp3=0,cp4=0;
cp1 = (a & 0xff000000) >> 24;
cp2 = (a & 0x00ff0000) >> 16;
cp3 = (a & 0x0000ff00) >> 8;
cp4 = (a & 0x000000ff) ;
printf("%d %d %d %d\n",cp1,cp2,cp3,cp4);
}
我的輸出是:
0 0 39 16
我發現(39<<8) + 16=10000
。
我不明白cp3=(a & 0x0000ff00)>>8; ==39
cp3=(a & 0x0000ff00)>>8; ==39
它是如何工作的?
我知道0xff=255
,我想知道( &
)操作和0xff
如何一起工作並占用特定位。
您能教我它如何工作嗎?
a = 0010 0111 0001 0000
0xff00 = 1111 1111 0000 0000
(a & 0xff00) = 0010 0111 0000 0000
(a & 0xff00)>>8 = 0000 0000 0010 0111 //shift the bits of above ANDing 8 times to right
0000 0000 0010 0111 = 39 in decimal
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.