本帖最后由 jiangenhao 于 2014-4-21 22:20 编辑
对a的后四位取反
- int a =6 ;
- a = n << 28; //左移28位;只留后四位
- int b = ~a ; //对n取反;
- int c = b >> 28; //右移28位;
复制代码
因为a的二进制表示为:
0000 0000 0000 0000 0000 0000 0000 0110
左移28位移位之后为
0110 0000 0000 0000 0000 0000 0000 0000
取反之后为
1001 1111 1111 1111 1111 1111 1111 1111
右移28位后为
1111 1111 1111 1111 1111 1111 1111 1001
而我希望得到的结果是
0000 0000 0000 0000 0000 0000 0000 1001
请问怎样才能实现右移时前面位数补0而不是补1
|