推荐答案
测试一下
题目
16bit有符号数0×A7,其中低4bit为尾数,截掉后4bit,四舍五入后是()
A.0×9
B.0×8
C.0×A
D.0×B
参考答案与知识点
参考答案
我们分析一下题目:16bit有符号数0xA7,注意0xA7只有8位,但题目说16bit有符号数,可能是指这个数在一个16位寄存器中,或者表示为一个16位的数,低8位是0xA7,高8位可能是0x00或0xFF?因为是“16bit有符号数”,并且是0xA7,通常理解为16位有符号数,其值为0x00A7(正数)?但0xA7作为8位有符号数是-89(因为最高位是1),但写成16位有符号数,应该扩展符号位,即0xFFA7,表示-89。但题目描述是“16bit有符号数0×A7”,这种写法有点歧义。通常,我们说一个16位有符号数,会写成比如0xFFA7,但这里写了0xA7,可能是指这个数的低8位是0xA7,高8位是0x00?或者是指一个16位的数据,其值为0xA7(即低8位,高8位为0)?但“有符号数”决定了符号位。
考虑到是16bit有符号数,0xA7如果看作16位,其值应为0x00A7 = 167,是正数。但通常如果用0xA7表示16位有符号数,会采用符号扩展,但这里没有给出高8位,所以更合理的解释是:这个数是一个16位有符号数的低8位是0xA7,但题目写“16bit有符号数0×A7”,可能是在表示一个16位的数值,而0xA7是它的十六进制表示,但只有两位十六进制数,通常意味着它是一个8位数。很多笔试题中会这样出:一个16位有符号数,其值为0xA7(实际上就是0x00A7),因为0xA7本身是8位,但题目说16bit,所以我们需要把它当作16位来看,即高8位为0。那么0x00A7 = 167,是一个正数。
另外,题目说“其中低4bit为尾数”,也就是说这个16位有符号数的低4位是尾数部分,要截掉后4bit,并且进行四舍五入。那么,我们需要对这个数进行量化,去掉低4位,保留高12位,但是输出是四舍五入后的结果,而且选项是0x9,0x8,0xA,0xB,这些都是4位的十六进制数,说明最终结果只保留了高4位?因为原始数是16位,截掉低4位后,剩下12位,但选项只有4位,所以可能这个数本身是一个8位有符号数?或者题目意思是:这个16bit有符号数,其低4位是尾数,我们要截掉这4位,然后进行四舍五入,得到的结果是一个8位有符号数?但选项中的0x9等是4位二进制表示,实际上就是0x0A,0x09等,但0xA就是10,0xB=11,0x9=9,0x8=8。可能是最终结果只取了高4位?
重新读题:“16bit有符号数0×A7,其中低4bit为尾数,截掉后4bit,四舍五入后是()” 选项是A.0×9 B.0×8 C.0×A D.0×B。0×A7这个数本身是8位,如果看作16位,应该是0x00A7。但低4bit为尾数,那么截掉低4位后,剩下高12位,但高12位就是0x00A?因为0x00A7的低4位是7,高12位是0x00A。四舍五入时,看截掉部分的最高位(即第3位,从0开始)?通常四舍五入(round to nearest, tie to even?)但这里简单说四舍五入,应该是看截掉的最高位是1则进位,否则舍去。这里截掉的是低4位,即尾数,其值为7(二进制0111),最高位是第3位(从0开始),即bit3 = 0?不对,低4位是bit3:0,其中bit3是最高位,7的bit3是0(因为7=0111),所以尾数的最高位是0,那么应该舍去,所以结果就是截掉后的高12位,即0x00A。但选项中没有0x00A(十进制10)的表示,选项是0xA(即10),0x9,0x8,0xB。0xA就在选项中。但要注意,0xA是十六进制,就是10。所以答案很可能是C.0×A。
但我们需要考虑有符号数的情况。如果这个16bit有符号数是负数,比如看作是0xFFA7(即-89),那么低4位是7,截掉后,高12位是0xFFA,即-6?四舍五入:看低4位最高位是bit3=0,舍去,所以结果就是0xFFA,但-6的十六进制表示是0xFFFA?不对,0xFFA是12位,表示-6。但题目选项是4位,可能只取高4位?那0xFFA的高4位是0xF?选项中没有0xF。所以更可能是正数情况。
因此,该16bit有符号数0xA7理解为0x00A7,正数167。低4位尾数7,截掉后为0x00A(十进制10),四舍五入时尾数最高位为0,舍弃,所以结果为10,即0xA。
如果考虑四舍五入的另一种定义:看尾数是否大于等于8?7<8,所以舍去,得10。如果尾数>=8则进1。这里尾数7,舍去。
因此答案是C.0×A。
但注意:题目说“截掉后4bit,四舍五入后是()”,可能指的是最终结果是一个4位的十六进制数?因为选项都是0x加一位。那么结果就是0xA。
但还有一种可能是:这个16bit有符号数0xA7,如果是指16位有符号数,其值就是0x00A7,但有些教材可能把0xA7直接当作16位有符号数,即高8位为0,所以是正数167。我认为答案就是C
涉及知识点
- IC 基础
- 数字电路
- 设计与验证