當我通過n = 0x0
,我得到0xffffffff
屏幕 我想到應該0x00000000
我通過32 bits
(只是忽略X!我沒有內部使用它的話上移功能)。位用C移位,意想不到的結果
void logicalShift(int x, int n) {
int y = 32;
int mask = 0xffffffff;
printf("mask %x", mask << (y-n));
}
一個有趣的一點是
void logicalShift(int x, int n) {
int y = 32;
int mask = 0xffffffff;
printf("mask %x", mask << 32);
}
這將輸出我的預期。我錯過了什麼嗎? 謝謝!
林ubuntu上
確實使它'unsigned int'改變了事情嗎? – Flexo 2012-08-16 12:58:32
參見http://stackoverflow.com/questions/4009885/arithmetic-bit-shift-on-a-signed-integer – 2012-08-16 12:59:12
nahh ..我做了面具無符號但它不工作 – 2012-08-16 12:59:45