简而言之,~n的定义是-n-1。在
例如~1
1 = 0001
~1 = 1110 (which is -2)
对于偶数
说~2
^{pr2}$但问题是
1110 = -2 can be easily visualized as -2 (the right two bits are 10 and the rest all 1)
1101 = -3 can't be visualized like this (going by the above logic it should be -5)
所以我想知道有没有一种简单的方法,不用做太多的计算,就可以从两个补码二进制中看出负数代表什么。在
这个定义是因为2是整数的补码表示。所以“真的”},所有的位都翻转了。但是“全部”翻转位的结果首先取决于
~n
是{n
有多少位。CPython在内部使用固定宽度的整数,但是语言不会将它们呈现给程序员,因此通常只有算术定义才有意义。但是这个定义的动机是翻转固定宽度2的补码整数的位。在...1110
不是~2
,而是-2
。~2
是...1101
,因为2
是{...1101
不是~3
,而是-3
。~3
是...1100
,因为3
是{我把它形象化的方式(当我通过训练把它想象成一个数学家的时候,我宁愿不考虑具体的数字),就是知道在2的补码中,
...10...
总是2的一个否定幂。所以...10
是-2,...100
是-4,等等然后为了知道
...110110
是什么,它是...110000
+110
,也就是说-16
+6
,这就是-10
。在当然},根据公式它是
...110110
也是(通过位翻转)~1001
,也就是说{-9-1
,它也是-10
。所以系统工作;-)~n = -n - 1
相当于-n = ~n + 1
。这意味着,要想知道一个数的负数是什么,你可以(在你的头脑中)把它倒置,然后再加上一个。假设0是1,反之亦然,然后加一。在例如:假装这样
是这个吗
^{pr2}$然后加1
^{3}$因此,
1101
表示-3
。在相关问题 更多 >
编程相关推荐