Python二进制源码补码

假如我的计算机是32位的,接下来要计算~5的值:

5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101
执行 ~ 运算,即 ~ 5后: 1111 1111 1111 1111 1111 1111 1111 1010,即结果为-6 ?

计算机普遍使用“补码”表示负数;知道一个数的“补码”,求其值(“源码”)的方法是:
首先看符号位(最左的一位),如果是1代表是负数(-),如果是0代表是正数(+);
然后对该值取反再+1,得到其“源码”

“补码”1111 1111 1111 1111 1111 1111 1111 1010,
首先,其符号位(最左一位)是1,表明它是负数;
然后,欲求其“源码”,对“补码”取反再加1:
0000 0000 0000 0000 0000 0000 0000 0101 + 1 =
0000 0000 0000 0000 0000 0000 0000 0110
最后,在得到的“源码”前加一个负号,
即-0000 0000 0000 0000 0000 0000 0000 0110 = -6

执行 ~ 运算获得“补码”根据“补码”首位判断正负,再对“补码”取反加1

>>> aa=5
>>> ~aa
-6
>>> ~aa+1
-5
>>> -aa
-5
>>> bin(aa)
'0b101'
>>> bin(~aa)
'-0b110'
>>> bin(~aa+1)
'-0b101'
>>> bin(-aa)
'-0b101'

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值