题目
7.单选题有一个byte的二进制数值是0b10000000,此值的十进制值是多少?A. 128B. -128C. -127D. 127
7.单选题
有一个byte的二进制数值是0b10000000,此值的十进制值是多少?
A. 128
B. -128
C. -127
D. 127
题目解答
答案
B. -128
解析
本题考查计算机中二进制数与十进制数的转换,特别是有符号数的表示。解题思路是先明确byte类型在计算机中是有符号的8位整数,其最高位为符号位(0表示正数,1表示负数),然后根据补码规则来计算该二进制数对应的十进制值。
步骤如下
- 首先判断符号位:
- 给定的二进制数
0b10000000,最高位是1,所以这是一个负数。
- 给定的二进制数
- 对于负数,在计算机中是以补码形式存储的。要求其原码,需要先对补码减1得到反码:
- 补码
0b10000000减1,即$0b10000000 - 1=0b01111111$,这就是反码。
- 补码
- 再将反码按位取反得到原码:
- 反码
0b01111111按位取反,得到原码0b10000000。
- 反码
- 计算原码对应的绝对值:
- 原码除符号位外的数值部分
0b0000000,其对应的十进制值为$0\times2^6 + 0\times2^5+0\times2^4 + 0\times2^3+0\times2^2 + 0\times2^1+0\times2^0 = 0$。 - 由于是负数,所以该二进制数对应的十进制值是$-128$。
- 原码除符号位外的数值部分