文章
36
粉丝
0
获赞
0
访问
3.7k
1. R1存放x,x为无符号数的```134 = 128+6```,十六进制形式为```86H```;
R5存放z1,z1为无符号数```x-y```的结果,直接算```1000 0110 - 1111 0110 = 1001 0000 = 90H```,也可以这么算$134-246+256=144=90H$
R6存放的是z2,z2为无符号数```x+y```的结果,直接算```1000 0110 + 1111 0110 = 0111 1100 = 7CH```
2. ```m = int x```,x表示为补码的```1000 0110 = 86H```,原码为```1111 1010 = FAH```,真值为$-(7\times16+10) = -122$;
```int k1=m-n```,由(1)知,k1的值为```1001 0000 = 90H```,最高位为1,是负数,则其原码为```1111 0000 = F0H```,真值为$-(7 \times 16) = -112$
3. 可以;n位加法器支持有符号数运算结果的范围是$[-2^{n-1},2^{n-1}-1]$,无符号数运算结果的范围是$[0, 2^{n}-1]$
从无符号数的加法来看,Sub传入值为0,减法Sub则传入1,X + Y根据CF和OF、ZF可以判断结果是否有效;从有符号数的加法来看,Sub传入值为0,减法Sub则传入1,X + Y根据SF和OF、ZF可以判断结果是否有效
补码加法器统一处理有符号和无符号运算,仅标志位解释不同(CF用于无符号,OF/SF用于有符号)
4. 计算机判断有符号整数加减运算的结果是否溢出,往往要参考OF
OF = $C_{n} \oplus C_{n-1}$,根据最高位的进位和最高数据位的进位异或结果判定是否溢出
加法运算的情况下,正数+正数=负数,负数+负数=正数这两种结果会发生溢出
减法运算的情况下,正数-负数=负数,负数-正数=正数这两种结果会发生溢出
&n...
登录后发布评论
暂无评论,来抢沙发