【python基础】取反操作~原理

项目中解析数据部分遇到,记载备忘。

1.结论:在python中,~A = -(A + 1)

2.例

3.准备知识:

  • 在内存中,整数是以补码形式存储的。
  • 二进制表示形式中,首位为1是负数,首位为0是正数。
  • 正数的补码是本身,负数的补码是反码+1。

4.原理:

例1:~3 = -4

在内存中,3是这个数:0000_0011(以8位二进制数表示),
取反:~3 = 1111_1100,该计算在内存中完成,完成后内存中的数字为:1111_1100,首位是1,是个负数。

在内存中,整数是以补码形式存储的,那么1111_1100是谁的补码呢?按照负数求原码的方法,求得原码为0000_0100 = 4

由于是个负数,所以结果为-4。证毕。

例2:~-4 = 3

在内存中,-4是这个数:1111_1100(以8位二进制数表示),

取反:~-4 = 0000_0011,该计算在内存中完成,完成后内存中的数字为:0000_0011,首位是0,是个正数。

在内存中,整数是以补码形式存储的,那么0000_0011是谁的补码呢?按照正数求原码的方法,求得原码依然为0000_0011 = 3

由于是个正数,所以结果为还为3。证毕。

为什么-4在内存中是1111_1100?因为4 = 0000_0100,4的补码 = 1111_1100。

5.为什么计算机中的数据采用补码存储和运算?

http://www.cnblogs.com/liushuijinger/archive/2012/04/18/2454677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值