Set @Mynum=253
Select ~(@Mynum)
问题:这个位反语句的输出结果应该为-253,为何系统显示是-254?
5 个解决方案
#1
记得:二进制表达式时,负数是有加1标识为负数
#2
首先看等号左边
(100) 的二进制表示为: 0110 0100
按位取反的意思就是每一位取反,0变1,1变0
所以:
~100 的二进制表示为:1001 1011
所以等号左边=1001 1011
再看右边
-101. 一旦看到出现负数,那么这个数一定是按有符号数的规则来表示的。一个二进制数 按位取反并加一以后就可以得到它自己的负数的补码,也就是说:
~x+1=-x
所以,我们把101按位取反加一
先取反:
~101=10011010
再加一:
~101+1=10011011=-101
所以等号右边=10011011=左边,所以等号成立。
#3
学习了,位反运算加1
#4
上述为解释这个等式,参考下
~100=-101
~100=-101
#5
你的目的是什么呢?
如果是数值的符号取反,可以用0-num
如果是数值的符号取反,可以用0-num
#1
记得:二进制表达式时,负数是有加1标识为负数
#2
首先看等号左边
(100) 的二进制表示为: 0110 0100
按位取反的意思就是每一位取反,0变1,1变0
所以:
~100 的二进制表示为:1001 1011
所以等号左边=1001 1011
再看右边
-101. 一旦看到出现负数,那么这个数一定是按有符号数的规则来表示的。一个二进制数 按位取反并加一以后就可以得到它自己的负数的补码,也就是说:
~x+1=-x
所以,我们把101按位取反加一
先取反:
~101=10011010
再加一:
~101+1=10011011=-101
所以等号右边=10011011=左边,所以等号成立。
#3
学习了,位反运算加1
#4
上述为解释这个等式,参考下
~100=-101
~100=-101
#5
你的目的是什么呢?
如果是数值的符号取反,可以用0-num
如果是数值的符号取反,可以用0-num