负数右移一位

      原码          反码       补码         右移一位    结果(原码)
-1 = 1000 00011111 11101111 11111111 1111   -1
-2 = 1000 00101111 11011111 11101111 1111   -1
-3 = 1000 00111111 11001111 11011111 1110   -2
-4 = 1000 01001111 10111111 11001111 1110   -2
-5 = 1000 01011111 10101111 10111111 1101   -3
-6 = 1000 01101111 10011111 10101111 1101   -3

 因此  对于 val / 2 != val >> 1的原因是:val为负数且为奇数

posted @ 2014-04-03 10:08  jihite  阅读(3424)  评论(0编辑  收藏  举报