计算机考研 408 机组 数制与编码 计算题例题及解析 常用结论原类型有符号就用符号扩展, 原类型无符号就用零扩展八位原码能表示的范围: -127~127八位补码能表示的范围: -128~127FFFF(HEX)65535(DEC)7FFF(HEX)32767(DEC)例题例1若十进制数为 137.5则其八进制数为().A. 89.8B. 211.4C. 211.5答: B八进制的0.1为十进制的8^-10.125, 所以十进制的0.5为八进制的0.4, 通过小数为判断即可例2若[x]补1,x1~x6其中xi取0或1若要x-32应当满足( )A. x1为0其他各位任意B. x1为1其他各位任意C. x1为1x2…x6中至少有一位为1D. x1为0x2…x6中至少有一位为1答: C[-32]补1110 0000[-16]补1111 0000例3【2016 统考真题】有如下C语言程序段:short si -32767; unsigned short usi si;执行上述两条语句后usi的值为()A.-32767B.32767C.32768D.32769答: D[-32767]补1000 0000 0000 0001usi [32767]补(0111 1111 1111 1111) 2 32769例4在 32 位计算机上执行下列 C 语言代码short si -32767 unsigned int ui si;则 ui 的真值为 。A.2^15−1B.2^151C.2^32−2^15−1D.2^32−2^151答: D16 位的 short 类型的 -32767 的二进制表示为 1000 0000 0000 0001将其转化为 32 位的 unsigned 时需要在最高位扩展 16 位。由于 -32767 (short) 的最高位为 1所以扩展的高位全部为 1。由此得到 32 位的 unsigned 的二进制是 1111 1111 1111 1111 1000 0000 0000 0001其真值为 12^152^16⋯2^312^32−2^151 。补充: 等比数列求和公式:例5假定编译器规定 int 和 short 型长度分别为 32 位和 16 位执行下列 C 语言语句unsigned short x65530; unsigned int yx;得到 y 的机器数为 。答: 0000 FFFAH将一个 16 位 unsigned short 转换成 32 位形式的 unsigned int因为都是无符号数新表示形式的高位用 0 填充。16 位无符号整数所能表示的最大值为 65 5 35其十六进制表示为 FFFFH故 x 的十六进制表示为 FFFFH - 5H FFFAH所以 y 的十六进制表示为 0000 FFFAH。