请问可以怎样算吗
(我知道我这样写出来的肯定不对,但这种思路可以吗)
把对应的整数二进制求出来,取反,再加1即可。
先求它的绝对值的二进制,然后在求补码就是那个负数的二进制。
不要把二进制和二进制的表示法混为一谈。
负数的二进制就是二进制的绝对值前面加上负号。
好比负数的十进制就是十进制的绝对值加上负号。
表示法是表示法,比如无符号的短整数65535表示为有符号的短整数就是-1,但是你能说-1=65535么?显然不能
所以一样的道理,1111111111111111是-1在计算机中的存储形式(短整数),但是绝对不能说-1=1111111111111111
而且,即便是使用补码表示,32位和16位还是不同的。
-1就是-1,你能说11111111=1111111111111111么?
总结下,-1的二进制形式就是-1
-2就是-10
-3就是-11
...
为什么我们用补码表示负数,这是因为计算的方便
11111111 + 1 = ?
100000000吧,在计算机中,我们把高位丢掉(溢出位),正好是0,-1+1=0,这样在数学上就统一起来了。
不考虑表示的方式,我们也可以有别的方法表示负数,比如说,我们可以定义,第一位为符号位,其余用源码表示,那么
10000001也可以表示-1,表示法是人为规定的。
很简单,负数加上他的绝对值是0,那么0就是11111111 11111111 11111111 11111111+1(32位计算机),所以负数就是
11111111 11111111 11111111 11111111-(绝对值-1)