You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

位非(Bitwise Not)运算符未正确翻转比特位问题求助

问题原因与解决方法

为什么输出是-00000010而不是11111110?

  • Python的整数采用无限精度的二进制补码存储,不是固定8位长度。位非运算~x的本质是-x - 1,所以~1的结果是-2,而非8位的11111110。
  • f'{x:08b}'格式化负数时,会先输出负号,再把绝对值的二进制补零到8位。-2的绝对值是2,二进制是10,补零后就是00000010,所以最终显示为-00000010。

如何得到8位的比特翻转结果?

可以通过**位与0xff**截取低8位,截断高位符号位,转换成对应的无符号8位数值:

a = 1
print(f'{a:08b}')  # 输出 00000001
x = ~a & 0xff
print(f'{x:08b}')  # 输出 11111110

0xff是8位全1的二进制数,和~a做位与操作后,会保留低8位的翻转结果,同时消除高位符号位的影响,最终得到预期的8位二进制值。

内容的提问来源于stack exchange,提问作者newbie54

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:17:25