Python中按位取反~200得-201的分步原理解析请求
Python按位取反~200得到-201的分步解释
前提知识
- Python中整数以补码形式参与按位运算,且支持任意精度(二进制位数无限制)
- 按位取反
~的规则:对二进制每一位取反(0→1,1→0) - 负数的补码与原码转换:补码 = 原码(符号位不变)取反 + 1;原码 = 补码取反 + 1(符号位参与取反)
分步推导
1. 写出200的二进制形式
200的8位二进制为 11001000,在Python中完整表示为前面无限个0 + 11001000(正数的符号位为0,高位补0)。
2. 执行按位取反~200
对每一位二进制取反:
- 前面的无限个0全部变为1
- 原
11001000部分取反后变为00110111
取反后的结果是无限个1 + 00110111,这是一个负数的补码(高位全1表示负数)。
3. 将补码转换为十进制负数
要得到十进制值,需把补码转成原码:
- 第一步:对补码(无限个1 + 00110111)取反,得到无限个0 +
11001000 - 第二步:给取反后的结果加1,得到
11001001,对应的十进制是201 - 第三步:因为原补码表示负数,所以最终结果为
-201
关于你提到的“-11001001”的说明
你写的-11001001是负数的原码简化写法(带负号的二进制),但计算机中实际存储的是补码。-201的补码是无限个1 + 00110111,和我们取反后的结果完全一致。
内容的提问来源于stack exchange,提问作者Андрей Белый
相关产品推荐
相关产品推荐

