已知32位寄存器中存放的变量x的机器码为C0000004H,请问: (1)当x是无符号整数时,x的真值是多少?x/2的真值是多少?x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么? (2)当x是带符号整数(

admin2018-08-12  24

问题 已知32位寄存器中存放的变量x的机器码为C0000004H,请问:
    (1)当x是无符号整数时,x的真值是多少?x/2的真值是多少?x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么?
    (2)当x是带符号整数(补码)时,x的真值是多少?x/2的真值是多少?.x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么?

选项

答案算术移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。当左移1位时,如不产生溢出,则数值乘以2;而右移1位时,如不考虑因移出舍去的末位尾数,则数值除以2。因此,对于无符号整数,所有二进制位均为数值位,而对于带符号数,最高位为符号位。2x即左移1位,x/2即右移1位。 (1)x是无符号整数,C0000004H的真值为221+230+22。 x/2是由x逻辑右移1位得到的,即(231+230+22)÷2,其真值为230+229+2,存放在R1中的机器码是 0110 0000 0000 0000 0000 0000 0000 0010 转换成十六进制为6000 0002H。 2x是由x逻辑左移1位得到 1 1000 0000 0000 0000 0000 0000 0000 1000 真值发生溢出,存放在R1中的机器码是1000 0000 0000 0000 0000 0000 0000 1000,转换成十六进制为8000 0008H。 (2)机器码C0000004H的二进制补码表示为 1,100 0000 0000 0000 0000 0000 0000 0100 这是一个负数,得到的二进制真值为 一011 1111 1111 1111 1111 1111 1111 1100 对应的十进制真值为一(230一22)。 x/2是由x算术右移1位得到的,其真值为一(229一2),用二进制真值表示为 一110 0000 0000 0000 0000 0000 0000 0010 存放在R1中的机器码是 1,110 0000 0000 0000 0000 0000 0000 0100 转换成十六进制表示为E0000002H。

解析
转载请注明原文地址:https://jikaoti.com/ti/R2fjFFFM
0

最新回复(0)