计算机中的数字是以补码形式储存的,0 - 1 = -1等价于0 + (-1) = -1对应补码就是0000 0000 0000 0000 + 1111 1111 1111 1111 = 1111 1111 1111 1111.
具体来说是补码的进制转换问题。
先将十进制转换成二进制的原码(首位是符号位0代表正数1代表负数),正数原码补码相同,负数补码是由原码除符号位(首位)外所有位取反加一得到的。所以0的二进制原码和补码为0000 0000 0000 0000,-1的二进制原码是1000 0000 0000 0001,-1的二进制补码为1111 1111 1111 1110 + 1 = 1111 1111 1111 1111。
再将二进制补码转换成十进制。0000 0000 0000 0000的十进制数就是0,二进制补码转换成十进制是取反加一得到十进制数的绝对值(而十进制的正负由补码的符号位,也就是首位决定,0代表正数1代表负数),1111 1111 1111 1111 取反得到0000 0000 0000 0000 ,加一得到0000 0000 0000 0001,补码首位为1代表是负数,所以1111 1111 1111 1111转换成十进制数是-1。
表达能力不是很好,希望能帮到你! |