~ 运算符不是按位取反吗?

来源:5-13 位运算符

senqing

2018-08-17

~ 运算符不是按位取反吗?为什么~2结果是-3呢?

>>> ~2

-3

十进制2变成二进制是10,按位取反之后不应该变成01了,不应该是十进制1吗?请问老师这里是怎么操作的

写回答

4回答

7七月

2018-08-18

我说真的,我没太看懂你要表达的意思。你可以看下负数的表示

0
4
senqing
嗯!
2018-08-20
共4条回复

o杨飞o

2022-05-28

# 取2原码
00000010
# 取2反码,此时可以看成某个数的补码。
11111101
# 某数的补码-1=某个数的反码
11111100
# 某数的原码 => 3
00000011
# 2的反码 = 3的反码+1(某数的反码+1就是某数的负数),所以 = -3
-3


0
0

慕无忌5210304

2020-09-23

2 八位代表00000010,第一位符号位,1负数0正数,取反为11111101, 3的二进制表示为00000011,负数为3的补码加1即11111100+1=11111101 ,这个数就是2的按位取反

0
0

李红星0

2020-02-23

这个记得组成原理学过,二进制前面还有符号位,0表示负数,1表示正数;按位取反好像还要用到原码,反码,补码,学了很久忘记怎么操作了。。。

0
0

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14446 学习 · 4438 问题

查看课程