为了账号安全,请及时绑定邮箱和手机立即绑定

请问python中为什么~True等于-2?另外除了~还有没有其他取反操作符?

请问python中为什么~True等于-2?另外除了~还有没有其他取反操作符?

慕码人2483693 2018-07-04 09:09:37
In[1]:~TrueOut[1]:-2谢谢!!...
查看完整描述

3 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

因为,True的默认值为1

把True取反,也就是把1取反
因为python默认的是有符号表示数
1的二进制表示就是00000001
各位取反之后就是11111110
可见,取反之后,符号位从0变成了1,成了一个负数
而已1作为符号位开头,计算机会将其识别为补码
因为负数在机器中是以补码表示、补码转换真值的方式为补码的数值位,也就是除符号位之外的各位取反后加1。11111110除符号位取反后的值为10000001,再加1,便得到10000010,转换成十进制,便是-2

查看完整回答
反对 回复 2018-07-30
?
撒科打诨

TA贡献1934条经验 获得超2个赞

不会啊。False是0,True是非0。所有非0,包括-2都是True

在你这个试例里True为1,所以~1就等于-2
~1取反后是-2
~0等于-1,

查看完整回答
反对 回复 2018-07-30
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

~(-2)是1
~(-2)是1
~(-2)是1
~(-2)是1
~(-2)是1

查看完整回答
反对 回复 2018-07-30
  • 3 回答
  • 0 关注
  • 1123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信