回 帖 发 新 帖 刷新版面

主题:not函数的问题

求助:
m=not(1)
为什么运行结果m不是0而是-2呢,看资料说not函数的作用:返回其参数的按位 “补” ( complement) 操作
编译器是cvf6.6 win7

回复列表 (共2个回复)

沙发

如果是integer(4)则:
1 的二进制为:  00000000 00000000 00000000 00000001
它按位取反后为:11111111 11111111 11111111 11111110
而计算机中有符号整数都是用补码表示的,则:
11111111 11111111 11111111 11111110就是:
1、因最高位为符号位,且为1,则此数为负数;
2、计算其绝对值:
 ~(11111111 11111111 11111111 11111110-1)
=~(11111111 11111111 11111111 11111101)
=  00000000 00000000 00000000 00000010
也就是十进制的2
上面两条合起来就是结果:-2

板凳


这样的啊,这个1前面还有这么多000000!
谢谢你的解答!

我来回复

您尚未登录,请登录后再回复。点此登录或注册