主题:not函数的问题
leeway
[专家分:0] 发布于 2011-10-08 21:32:00
求助:
m=not(1)
为什么运行结果m不是0而是-2呢,看资料说not函数的作用:返回其参数的按位 “补” ( complement) 操作
编译器是cvf6.6 win7
回复列表 (共2个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-10-08 22:55:00
如果是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
板凳
leeway [专家分:0] 发布于 2011-10-08 23:20:00
这样的啊,这个1前面还有这么多000000!
谢谢你的解答!
我来回复