2025-11-20 05:30:07
首先讲原码是符号位加绝对值二进制,正数原码就是它自己,负数符号位1,数值部分绝对值二进制。比如+8的原码是1000,那-8的原码应该是符号位1加数值部分1000,组合成1010000。不过要看机器字长多少位,如果字长不够容纳符号位和数值位,就可能出现无法表示的情况。比如8位二进制原码,最高只能表示-127到+127,所以-128根本没原码。
那为什么-8没原码呢?因为原码要求符号位和数值位分开,负数的数值部分必须是非负整数。假设机器用8位表示,第一位是符号位,后7位是数值。那-8的绝对值是8,二进制是1000,需要4位数值位,加上符号位总共5位,8位足够表示。但用户可能混淆了补码和原码,或者误用了字长概念。比如如果题目限定用5位原码,那-8的符号位1+数值1000需要5位,刚好10100,但若题目要求6位,则可能冲突。另外原码无法表示-0和+0,但-8不是这个问题。所以核心是字长限制和符号位占位导致的无法表示。比如用4位原码,符号位1+数值1000需要5位,无法在4位中容纳,所以-8没原码。
本题链接: