python - 为什么下面的 python 代码会给出 -5 作为结果
问题描述
我尝试了以下代码:
x = 4
b = ~x
print(b)
当我打印 b 结果是-5
4
二进制是100
,不~4
应该011
吗?
解决方案
4
确实是100
二进制的,但~4
不仅仅是011
,它11111...111011
有足够的前导1
位来填充内存中类型的表示。
在 Python 中,整数没有固定的大小,应该有无限数量的前导1
位。诀窍是对这些数字使用二进制补码表示并使用等价:~a
<=> -a-1
,因此~4
是有效的-5
。
推荐阅读
- node.js - 从脚本安装后,Bash 重新加载以查找可执行文件
- python - 循环遍历文件夹和 csv 文件
- c# - Entity Framework Core 尝试在 AddRange 之后在保存时重新插入导航属性
- sql - 将 varchar 值转换为数据类型 int 时转换失败。[SQLSTATE 22018](错误 245)
- parsing - 从复杂字符串返回列表
- java - 面临有关在 android 中改造登录的问题
- javascript - slot-scope 和 v-for on 的模糊组合使用(v-for 具有更高的优先级)。为作用域插槽使用包装器以使其更清晰
- javascript - 使用 Redux 更新组件状态以查看 Flatlist 中的数据
- python - 在python中我需要删除第一个字母
- arraylist - 如何获取 BufferedImage [ ] 中的元素?