2025-11-20 06:34:43
8的二进制是00001000,-258的二进制是100000010。8是正数直接转换,-258用补码表示。先看8的十进制,拆成2的幂次方,8等于2的三次方,所以二进制是1000。前面补四个0变成8位就是00001000。负数-258要取反加一,先算258的二进制是11111110,取反变成00000001,加1得到00000010,再在前面加一个符号位1,组合成100000010。
为什么这样算呢?二进制补码规则是负数取反加一。先算绝对值258,转换成二进制需要9位,因为8位最大255不够。258除以2余0,商129余0,129除以2余1,商64余1,64除以2余0,商32余0,32除以2余0,商16余0,16除以2余0,商8余0,8除以2余0,商4余0,4除以2余0,商2余0,2除以2余0,商1余0,1除以2余1。所以258的二进制是111111110,但实际计算发现应该是111111110,但这里可能出错,正确计算258除以2得到129余0,129除以2得64余1,64除以2得32余0,32除以2得16余0,16除以2得8余0,8除以2得4余0,4除以2得2余0,2除以2得1余0,1除以2得0余1,所以258的二进制是111111110。取反后是000000001,加1得000000010,符号位1组合成100000010。这样-258的二进制就是100000010。注意这里需要9位表示,因为8位补码最大只能到-128。转换过程中容易出错的地方是位数不够导致符号位错误,还有取反加一时忘记末尾的进位。
本题链接: