负数二进制转换 位移运算问题

问题描述:

负数二进制转换 位移运算问题
负数二进制数怎么转换成十进制?如:1 1111100 = — 4,这是怎么转的?求方法
- 20>> 3 结果是 - 3,为什么?

似乎是 取反加一 也就是说要求负数,就是 用对应正数,取反+1
4 0000 0100 取反 1111 1011 +1后 1111 1100
3 0000 0011 取反 1111 1100 +1后 1111 1101
这种方法叫求补运算.负数转正数,也是进行取反+1 的求补运算
负数二进制转十进制,是对这个负数二进制进行求补运算,得到对应的正数,前面加个负号就得到对应的十进制了吧
20 0001 0100 进行求补运算 取反1110 1011 +1后 1110 1100 这就是-20的二进制
-20>>3 算术右移3位 1111 1101 变成这个 也就是-3 对应的二进制了
因为是负数,左边第一位是1,所以算术右移3位相当于左边加 3个 1,右边再减去3位 .