位运算与的有关问题
位运算与的问题
unsigned int z;
z=~0;
z=(z>>5)&(z<<(8));
printf("%0",z);
结果是3400也就是11100000000
a>>5=1111111111111111&z<<8=1111111100000000 按理说应该等于1111111100000000
------解决方案--------------------
------解决方案--------------------
无符号数右移填0,谁告诉你是1了.
------解决方案--------------------
我试验了一下,结果是777777400,也就是0111 1111 1111 1111 1111 0000 0000
z是unsigned 型,所以没有符号位,右移的时候左边用0补充,所以z>>5是 0X07ffffff.
另外楼主有笔误,printf("%0",z)是printf("%o",z)。
unsigned int z;
z=~0;
z=(z>>5)&(z<<(8));
printf("%0",z);
结果是3400也就是11100000000
a>>5=1111111111111111&z<<8=1111111100000000 按理说应该等于1111111100000000
------解决方案--------------------
------解决方案--------------------
无符号数右移填0,谁告诉你是1了.
------解决方案--------------------
我试验了一下,结果是777777400,也就是0111 1111 1111 1111 1111 0000 0000
z是unsigned 型,所以没有符号位,右移的时候左边用0补充,所以z>>5是 0X07ffffff.
另外楼主有笔误,printf("%0",z)是printf("%o",z)。