Python反转运算符可视化负numb

2024-05-23 19:53:19 发布

您现在位置:Python中文网/ 问答频道 /正文

简而言之,~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)

所以我想知道有没有一种简单的方法,不用做太多的计算,就可以从两个补码二进制中看出负数代表什么。在


Tags: therightwhich定义isasbecan
2条回答

这个定义是因为2是整数的补码表示。所以“真的”~n是{},所有的位都翻转了。但是“全部”翻转位的结果首先取决于n有多少位。CPython在内部使用固定宽度的整数,但是语言不会将它们呈现给程序员,因此通常只有算术定义才有意义。但是这个定义的动机是翻转固定宽度2的补码整数的位。在

1110 = ~2 can be easily visualized as -2

...1110不是~2,而是-2~2...1101,因为2是{}。在

1101 = ~3 can't be visualized like this

...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,反之亦然,然后加一。在

例如:假装这样

1101

是这个吗

^{pr2}$

然后加1

^{3}$

因此,1101表示-3。在

相关问题 更多 >