16进制加法减法溢出问题
请问如何判定16进制加法减法有溢出问题,谢谢?AX=9FD0H+D023H=61F3H,OF=1AX=6FF3H-9FD0H=D023H,OF=1AX=6FF3H-D02...
请问如何判定16进制加法减法有溢出问题,谢谢?
AX=9FD0H+ D023H=61F3H,OF=1
AX=6FF3H-9FD0H=D023H,OF=1
AX=6FF3H-D023H=9FD0H,OF=1
AX=147BH+ 80DCH=9557H,OF=0
AX=14C6H+80DCH=95A2H,OF=0 ,
AX=B568H+54B7H=0A1FH,OF=0 ,
AX=42C8H+608DH=A355H,OF=1 ,
AX=D023H+9FD0H=6FF3H,OF=1 , 展开
AX=9FD0H+ D023H=61F3H,OF=1
AX=6FF3H-9FD0H=D023H,OF=1
AX=6FF3H-D023H=9FD0H,OF=1
AX=147BH+ 80DCH=9557H,OF=0
AX=14C6H+80DCH=95A2H,OF=0 ,
AX=B568H+54B7H=0A1FH,OF=0 ,
AX=42C8H+608DH=A355H,OF=1 ,
AX=D023H+9FD0H=6FF3H,OF=1 , 展开
展开全部
溢出,是补码运算的固有缺陷。
补码的符号位也参加了运算。
数值位也可以向符号位进位,就可能导致符号错乱,出现溢出。
只有发生下列四种情况,才会溢出:
正+正=负
正-负=负
负+负=正
负-正=正
那么,题目中的算式,溢出情况如下:
9FD0H + D023H = 61F3H, 负+负=正,溢出
6FF3H - 9FD0H = D023H, 正-负=负,溢出
6FF3H - D023H = 9FD0H, 正-负=负,溢出
147BH + 80DCH = 9557H, 正+负,绝不会溢出
14C6H + 80DCH = 95A2H, 正+负,绝不会溢出
B568H + 54B7H = 0A1FH, 负+正,绝不会溢出
42C8H + 608DH = A355H, 正+正=负,溢出
D023H + 9FD0H = 6FF3H, 负+负=正,溢出
补码的符号位也参加了运算。
数值位也可以向符号位进位,就可能导致符号错乱,出现溢出。
只有发生下列四种情况,才会溢出:
正+正=负
正-负=负
负+负=正
负-正=正
那么,题目中的算式,溢出情况如下:
9FD0H + D023H = 61F3H, 负+负=正,溢出
6FF3H - 9FD0H = D023H, 正-负=负,溢出
6FF3H - D023H = 9FD0H, 正-负=负,溢出
147BH + 80DCH = 9557H, 正+负,绝不会溢出
14C6H + 80DCH = 95A2H, 正+负,绝不会溢出
B568H + 54B7H = 0A1FH, 负+正,绝不会溢出
42C8H + 608DH = A355H, 正+正=负,溢出
D023H + 9FD0H = 6FF3H, 负+负=正,溢出
展开全部
是都溢出了,但是溢出后只是标志位置位(CF和OF)而已,算式还是继续的,需要你手动检查标志位 ;
CF没问题;
OF的值是运算结果最高有效位向高位的进位(CF的值)与到最高有效位的进位值异或,其结果发到溢出标志中。例如8位二进制数10000000和11111110相加,第六位想最高有效位的(第七位)无进位,但是第七位向高位有进位值(CF=1);
由于1 XOR 0 = 1,因此OF = 1;
最后的补充了,要是楼主再不明白也没辙了:
CPU如何知道算术运算时有符号运算还是无符号运算的呢?我只能给出一个初步听起来使人发懵的回答:CPU并不知道!CPU在算术运算之后根据一系列逻辑规则(像我上面讲的那段,那其实就是CPU真正判断OF的方法)设置各种状态标志,他并不知道哪些标志队程序员是重要的,程序员自己应该根据之心的操作的类型来选择解释哪些标志和忽略哪些标志;
CF没问题;
OF的值是运算结果最高有效位向高位的进位(CF的值)与到最高有效位的进位值异或,其结果发到溢出标志中。例如8位二进制数10000000和11111110相加,第六位想最高有效位的(第七位)无进位,但是第七位向高位有进位值(CF=1);
由于1 XOR 0 = 1,因此OF = 1;
最后的补充了,要是楼主再不明白也没辙了:
CPU如何知道算术运算时有符号运算还是无符号运算的呢?我只能给出一个初步听起来使人发懵的回答:CPU并不知道!CPU在算术运算之后根据一系列逻辑规则(像我上面讲的那段,那其实就是CPU真正判断OF的方法)设置各种状态标志,他并不知道哪些标志队程序员是重要的,程序员自己应该根据之心的操作的类型来选择解释哪些标志和忽略哪些标志;
追问
OF的值是运算结果最高有效位向高位的进位(CF的值)与到最高有效位的进位值异或,其结果发到溢出标志中。就是说16进制的D3到D4的进位与D4的进位相异或,就是OF的值。对不?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询