项目中解析数据部分遇到,记载备忘。
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