2015-11-06 189 views
4

在硖欧文的书的解释,他谈到设置溢出标志的机制,他写道:设置溢出标志

CPU使用了一个有趣的机制来确定溢流FL AG的状态加入后或减法操作。加密标志与结果的高位进行异或运算。结果值放在溢出标志中。

我写了一个简单的程序,示出了在人的寄存器添加5〜127设置溢出标志位:

0111 1111 + 0000 0101 = 1000 0100 carry flag = 0, high bit = 1, overflow = 1 

在AL寄存器不设置溢出标志但是加入5至255:

1111 1111 + 0000 0101 = 0000 0100 carry flag = 1, high bit = 0, overflow = 0 

为什么在第二个例子中设置的溢出标志不是满足条件语句ie;进位标志= 1和高位= 0?

+1

我认为你在书中发现了一个错误;)注意它之前说过:_当两个加法操作数的符号不同时,从不会发生超额流量,所以也许他的意思是这个公式只适用于符号不匹配的情况。 – Jester

+0

进位基本上是“无符号溢出”溢出是“有符号”溢出。不确定你的书,但是如果两个操作数具有相同的符号并且结果是不同的符号,那么签名溢出是捷径。技术上在msbit上,如果进位和执行不相同,那么你有一个签名溢出。如果你添加-n和-y并得到一些正数,那么你在寄存器中没有足够的位来存储结果。例如,0x80 + 0x80 = 0x00。所以杰斯特肯定会接受他的评论。 –

+0

ahh,当然,如果溢出的先决条件是两个符号都是相同的,那么确定xor是一个(简单的)方法来判断两位是相同还是不同。所以如果操作数msbits匹配,THEN异或结果msbit与操作数msbit如果一个然后两个位匹配如果零然后他们没有。我认为x86是一种倒置进位,使其成为减法的借位,所以你必须小心地在正确的时间取得进位。 –

回答

7

在你的第二个例子255 + 5中没有设置溢出标志的原因是因为它涉及到带符号的算术。您正在添加-1 + 5,它给出了4.没有溢出:结果是正确的。正如@Jester所评论的那样,你的书中一定有错误。溢出标志的

我的8086书说:

如果从第6位至第7位(在 符号位)内部携带它会被设置和没有外部进。当 从第6位到第7位没有内部进位,并且外部进位有 时,它也会被置位。

编辑

段落继续:

对于技术头脑的读者,溢出标志被设置 异或运入和运出位7(符号位)。

在第二个例子中,执行1(进位标志),并且因为所有位都已设置,所以在内部添加期间必须有内部进位,即使得到的b7是0.

+0

感谢你的回答,你有什么书? – Boo

+1

古代ISBN 0-89588-120-9 * James W.Coffron编写的8086/8088 *(Sybex)。 –

+0

请问您可以添加到您的答案中:使用您书中的解释,为什么在答案的第二个示例中没有设置溢出?是因为从第6位到第7位有一个内部进位,并且有外部进位?因此xor – Boo

3

您可以编写一个简单的程序来检查逻辑对3位加/减的操作。

#include <stdio.h> 
int main (void) 
{ 
    unsigned int ra; 
    unsigned int rb; 
    unsigned int rc; 
    unsigned int rd; 
    unsigned int re; 
    unsigned int cy; 
    unsigned int ov; 
    unsigned int ovx; 
    unsigned int ovy; 
    int sa; 
    int sb; 
    int sc; 
    int sd; 
    for(ra=0;ra<8;ra++) 
    { 
     for(rb=0;rb<8;rb++) 
     { 
      printf("%u%u%u",(ra>>2)&1,(ra>>1)&1,(ra>>0)&1); 
      printf(" + "); 
      printf("%u%u%u",(rb>>2)&1,(rb>>1)&1,(rb>>0)&1); 
      printf(" :"); 
      if(ra&4) sa=(ra|((-1)<<3)); else sa=ra; 
      if(rb&4) sb=(rb|((-1)<<3)); else sb=rb; 
      sc = sa + sb; 
      //printf("%u(%2d) + %u(%2d)",ra,sa,rb,sb); 
      printf("%2d + %2d = %2d",sa,sb,sc); 
      printf(" :"); 
      rc=rb; 
      printf("%u%u%u",(ra>>2)&1,(ra>>1)&1,(ra>>0)&1); 
      printf(" + "); 
      printf("%u%u%u",(rc>>2)&1,(rc>>1)&1,(rc>>0)&1); 
      printf(" + 0 = "); 
      rd=ra+rc+0; 
      if(rd&4) sd=(rd|((-1)<<3)); else sd=rd; 
      re=(ra&3)+(rc&3)+0; 
      ov=0; 
      if((ra&4)==(rc&4)) ov = ((rd>>3)&1)^((rd>>2)&1); 
      ovy=0; 
      if((ra&4)==(rc&4)) if((rd&4) != (ra&4)) ovy=1; 
      ovx = ((rd>>3)&1)^((re>>2)&1); 
      printf("%u%u%u",(rd>>2)&1,(rd>>1)&1,(rd>>0)&1); 
      printf(" C %u O %u %u %u ",(rd>>3)&1,ov,ovx,ovy); 
      if(sc>3) printf("X"); 
      if(sc<(-4)) printf("X"); 
      printf("\n"); 
     } 
    } 
    for(ra=0;ra<8;ra++) 
    { 
     for(rb=0;rb<8;rb++) 
     { 
      printf("%u%u%u",(ra>>2)&1,(ra>>1)&1,(ra>>0)&1); 
      printf(" - "); 
      printf("%u%u%u",(rb>>2)&1,(rb>>1)&1,(rb>>0)&1); 
      printf(" :"); 
      if(ra&4) sa=(ra|((-1)<<3)); else sa=ra; 
      if(rb&4) sb=(rb|((-1)<<3)); else sb=rb; 
      sc = sa - sb; 
      //printf("%u(%2d) - %u(%2d)",ra,sa,rb,sb); 
      printf("%2d - %2d = %2d",sa,sb,sc); 
      printf(" : "); 
      rc=(~rb)&7; 
      printf("%u%u%u",(ra>>2)&1,(ra>>1)&1,(ra>>0)&1); 
      printf(" + "); 
      printf("%u%u%u",(rc>>2)&1,(rc>>1)&1,(rc>>0)&1); 
      printf(" + 1 = "); 
      rd=ra+rc+1; 
      if(rd&4) sd=(rd|((-1)<<3)); else sd=rd; 
      re=(ra&3)+(rc&3)+1; 
      ov=0; 
      if((ra&4)==(rc&4)) ov = ((rd>>3)&1)^((rd>>2)&1); 
      ovx = ((rd>>3)&1)^((re>>2)&1); 
      ovy=0; 
      if((ra&4)==(rc&4)) if((rd&4) != (ra&4)) ovy=1; 
      printf("%u%u%u",(rd>>2)&1,(rd>>1)&1,(rd>>0)&1); 
      printf(" C %u O %u %u %u ",(rd>>3)&1,ov,ovx,ovy); 
      sc = sa - sb; 
      if(sc>3) printf("X"); 
      if(sc<(-4)) printf("X"); 
      printf("\n"); 
     } 
    } 
} 

000 + 000 : 0 + 0 = 0 :000 + 000 + 0 = 000 C 0 O 0 0 0 
000 + 001 : 0 + 1 = 1 :000 + 001 + 0 = 001 C 0 O 0 0 0 
000 + 010 : 0 + 2 = 2 :000 + 010 + 0 = 010 C 0 O 0 0 0 
000 + 011 : 0 + 3 = 3 :000 + 011 + 0 = 011 C 0 O 0 0 0 
000 + 100 : 0 + -4 = -4 :000 + 100 + 0 = 100 C 0 O 0 0 0 
000 + 101 : 0 + -3 = -3 :000 + 101 + 0 = 101 C 0 O 0 0 0 
000 + 110 : 0 + -2 = -2 :000 + 110 + 0 = 110 C 0 O 0 0 0 
000 + 111 : 0 + -1 = -1 :000 + 111 + 0 = 111 C 0 O 0 0 0 
001 + 000 : 1 + 0 = 1 :001 + 000 + 0 = 001 C 0 O 0 0 0 
001 + 001 : 1 + 1 = 2 :001 + 001 + 0 = 010 C 0 O 0 0 0 
001 + 010 : 1 + 2 = 3 :001 + 010 + 0 = 011 C 0 O 0 0 0 
001 + 011 : 1 + 3 = 4 :001 + 011 + 0 = 100 C 0 O 1 1 1 X 
001 + 100 : 1 + -4 = -3 :001 + 100 + 0 = 101 C 0 O 0 0 0 
001 + 101 : 1 + -3 = -2 :001 + 101 + 0 = 110 C 0 O 0 0 0 
001 + 110 : 1 + -2 = -1 :001 + 110 + 0 = 111 C 0 O 0 0 0 
001 + 111 : 1 + -1 = 0 :001 + 111 + 0 = 000 C 1 O 0 0 0 
010 + 000 : 2 + 0 = 2 :010 + 000 + 0 = 010 C 0 O 0 0 0 
010 + 001 : 2 + 1 = 3 :010 + 001 + 0 = 011 C 0 O 0 0 0 
010 + 010 : 2 + 2 = 4 :010 + 010 + 0 = 100 C 0 O 1 1 1 X 
010 + 011 : 2 + 3 = 5 :010 + 011 + 0 = 101 C 0 O 1 1 1 X 
010 + 100 : 2 + -4 = -2 :010 + 100 + 0 = 110 C 0 O 0 0 0 
010 + 101 : 2 + -3 = -1 :010 + 101 + 0 = 111 C 0 O 0 0 0 
010 + 110 : 2 + -2 = 0 :010 + 110 + 0 = 000 C 1 O 0 0 0 
010 + 111 : 2 + -1 = 1 :010 + 111 + 0 = 001 C 1 O 0 0 0 
011 + 000 : 3 + 0 = 3 :011 + 000 + 0 = 011 C 0 O 0 0 0 
011 + 001 : 3 + 1 = 4 :011 + 001 + 0 = 100 C 0 O 1 1 1 X 
011 + 010 : 3 + 2 = 5 :011 + 010 + 0 = 101 C 0 O 1 1 1 X 
011 + 011 : 3 + 3 = 6 :011 + 011 + 0 = 110 C 0 O 1 1 1 X 
011 + 100 : 3 + -4 = -1 :011 + 100 + 0 = 111 C 0 O 0 0 0 
011 + 101 : 3 + -3 = 0 :011 + 101 + 0 = 000 C 1 O 0 0 0 
011 + 110 : 3 + -2 = 1 :011 + 110 + 0 = 001 C 1 O 0 0 0 
011 + 111 : 3 + -1 = 2 :011 + 111 + 0 = 010 C 1 O 0 0 0 
100 + 000 :-4 + 0 = -4 :100 + 000 + 0 = 100 C 0 O 0 0 0 
100 + 001 :-4 + 1 = -3 :100 + 001 + 0 = 101 C 0 O 0 0 0 
100 + 010 :-4 + 2 = -2 :100 + 010 + 0 = 110 C 0 O 0 0 0 
100 + 011 :-4 + 3 = -1 :100 + 011 + 0 = 111 C 0 O 0 0 0 
100 + 100 :-4 + -4 = -8 :100 + 100 + 0 = 000 C 1 O 1 1 1 X 
100 + 101 :-4 + -3 = -7 :100 + 101 + 0 = 001 C 1 O 1 1 1 X 
100 + 110 :-4 + -2 = -6 :100 + 110 + 0 = 010 C 1 O 1 1 1 X 
100 + 111 :-4 + -1 = -5 :100 + 111 + 0 = 011 C 1 O 1 1 1 X 
101 + 000 :-3 + 0 = -3 :101 + 000 + 0 = 101 C 0 O 0 0 0 
101 + 001 :-3 + 1 = -2 :101 + 001 + 0 = 110 C 0 O 0 0 0 
101 + 010 :-3 + 2 = -1 :101 + 010 + 0 = 111 C 0 O 0 0 0 
101 + 011 :-3 + 3 = 0 :101 + 011 + 0 = 000 C 1 O 0 0 0 
101 + 100 :-3 + -4 = -7 :101 + 100 + 0 = 001 C 1 O 1 1 1 X 
101 + 101 :-3 + -3 = -6 :101 + 101 + 0 = 010 C 1 O 1 1 1 X 
101 + 110 :-3 + -2 = -5 :101 + 110 + 0 = 011 C 1 O 1 1 1 X 
101 + 111 :-3 + -1 = -4 :101 + 111 + 0 = 100 C 1 O 0 0 0 
110 + 000 :-2 + 0 = -2 :110 + 000 + 0 = 110 C 0 O 0 0 0 
110 + 001 :-2 + 1 = -1 :110 + 001 + 0 = 111 C 0 O 0 0 0 
110 + 010 :-2 + 2 = 0 :110 + 010 + 0 = 000 C 1 O 0 0 0 
110 + 011 :-2 + 3 = 1 :110 + 011 + 0 = 001 C 1 O 0 0 0 
110 + 100 :-2 + -4 = -6 :110 + 100 + 0 = 010 C 1 O 1 1 1 X 
110 + 101 :-2 + -3 = -5 :110 + 101 + 0 = 011 C 1 O 1 1 1 X 
110 + 110 :-2 + -2 = -4 :110 + 110 + 0 = 100 C 1 O 0 0 0 
110 + 111 :-2 + -1 = -3 :110 + 111 + 0 = 101 C 1 O 0 0 0 
111 + 000 :-1 + 0 = -1 :111 + 000 + 0 = 111 C 0 O 0 0 0 
111 + 001 :-1 + 1 = 0 :111 + 001 + 0 = 000 C 1 O 0 0 0 
111 + 010 :-1 + 2 = 1 :111 + 010 + 0 = 001 C 1 O 0 0 0 
111 + 011 :-1 + 3 = 2 :111 + 011 + 0 = 010 C 1 O 0 0 0 
111 + 100 :-1 + -4 = -5 :111 + 100 + 0 = 011 C 1 O 1 1 1 X 
111 + 101 :-1 + -3 = -4 :111 + 101 + 0 = 100 C 1 O 0 0 0 
111 + 110 :-1 + -2 = -3 :111 + 110 + 0 = 101 C 1 O 0 0 0 
111 + 111 :-1 + -1 = -2 :111 + 111 + 0 = 110 C 1 O 0 0 0 
000 - 000 : 0 - 0 = 0 : 000 + 111 + 1 = 000 C 1 O 0 0 0 
000 - 001 : 0 - 1 = -1 : 000 + 110 + 1 = 111 C 0 O 0 0 0 
000 - 010 : 0 - 2 = -2 : 000 + 101 + 1 = 110 C 0 O 0 0 0 
000 - 011 : 0 - 3 = -3 : 000 + 100 + 1 = 101 C 0 O 0 0 0 
000 - 100 : 0 - -4 = 4 : 000 + 011 + 1 = 100 C 0 O 1 1 1 X 
000 - 101 : 0 - -3 = 3 : 000 + 010 + 1 = 011 C 0 O 0 0 0 
000 - 110 : 0 - -2 = 2 : 000 + 001 + 1 = 010 C 0 O 0 0 0 
000 - 111 : 0 - -1 = 1 : 000 + 000 + 1 = 001 C 0 O 0 0 0 
001 - 000 : 1 - 0 = 1 : 001 + 111 + 1 = 001 C 1 O 0 0 0 
001 - 001 : 1 - 1 = 0 : 001 + 110 + 1 = 000 C 1 O 0 0 0 
001 - 010 : 1 - 2 = -1 : 001 + 101 + 1 = 111 C 0 O 0 0 0 
001 - 011 : 1 - 3 = -2 : 001 + 100 + 1 = 110 C 0 O 0 0 0 
001 - 100 : 1 - -4 = 5 : 001 + 011 + 1 = 101 C 0 O 1 1 1 X 
001 - 101 : 1 - -3 = 4 : 001 + 010 + 1 = 100 C 0 O 1 1 1 X 
001 - 110 : 1 - -2 = 3 : 001 + 001 + 1 = 011 C 0 O 0 0 0 
001 - 111 : 1 - -1 = 2 : 001 + 000 + 1 = 010 C 0 O 0 0 0 
010 - 000 : 2 - 0 = 2 : 010 + 111 + 1 = 010 C 1 O 0 0 0 
010 - 001 : 2 - 1 = 1 : 010 + 110 + 1 = 001 C 1 O 0 0 0 
010 - 010 : 2 - 2 = 0 : 010 + 101 + 1 = 000 C 1 O 0 0 0 
010 - 011 : 2 - 3 = -1 : 010 + 100 + 1 = 111 C 0 O 0 0 0 
010 - 100 : 2 - -4 = 6 : 010 + 011 + 1 = 110 C 0 O 1 1 1 X 
010 - 101 : 2 - -3 = 5 : 010 + 010 + 1 = 101 C 0 O 1 1 1 X 
010 - 110 : 2 - -2 = 4 : 010 + 001 + 1 = 100 C 0 O 1 1 1 X 
010 - 111 : 2 - -1 = 3 : 010 + 000 + 1 = 011 C 0 O 0 0 0 
011 - 000 : 3 - 0 = 3 : 011 + 111 + 1 = 011 C 1 O 0 0 0 
011 - 001 : 3 - 1 = 2 : 011 + 110 + 1 = 010 C 1 O 0 0 0 
011 - 010 : 3 - 2 = 1 : 011 + 101 + 1 = 001 C 1 O 0 0 0 
011 - 011 : 3 - 3 = 0 : 011 + 100 + 1 = 000 C 1 O 0 0 0 
011 - 100 : 3 - -4 = 7 : 011 + 011 + 1 = 111 C 0 O 1 1 1 X 
011 - 101 : 3 - -3 = 6 : 011 + 010 + 1 = 110 C 0 O 1 1 1 X 
011 - 110 : 3 - -2 = 5 : 011 + 001 + 1 = 101 C 0 O 1 1 1 X 
011 - 111 : 3 - -1 = 4 : 011 + 000 + 1 = 100 C 0 O 1 1 1 X 
100 - 000 :-4 - 0 = -4 : 100 + 111 + 1 = 100 C 1 O 0 0 0 
100 - 001 :-4 - 1 = -5 : 100 + 110 + 1 = 011 C 1 O 1 1 1 X 
100 - 010 :-4 - 2 = -6 : 100 + 101 + 1 = 010 C 1 O 1 1 1 X 
100 - 011 :-4 - 3 = -7 : 100 + 100 + 1 = 001 C 1 O 1 1 1 X 
100 - 100 :-4 - -4 = 0 : 100 + 011 + 1 = 000 C 1 O 0 0 0 
100 - 101 :-4 - -3 = -1 : 100 + 010 + 1 = 111 C 0 O 0 0 0 
100 - 110 :-4 - -2 = -2 : 100 + 001 + 1 = 110 C 0 O 0 0 0 
100 - 111 :-4 - -1 = -3 : 100 + 000 + 1 = 101 C 0 O 0 0 0 
101 - 000 :-3 - 0 = -3 : 101 + 111 + 1 = 101 C 1 O 0 0 0 
101 - 001 :-3 - 1 = -4 : 101 + 110 + 1 = 100 C 1 O 0 0 0 
101 - 010 :-3 - 2 = -5 : 101 + 101 + 1 = 011 C 1 O 1 1 1 X 
101 - 011 :-3 - 3 = -6 : 101 + 100 + 1 = 010 C 1 O 1 1 1 X 
101 - 100 :-3 - -4 = 1 : 101 + 011 + 1 = 001 C 1 O 0 0 0 
101 - 101 :-3 - -3 = 0 : 101 + 010 + 1 = 000 C 1 O 0 0 0 
101 - 110 :-3 - -2 = -1 : 101 + 001 + 1 = 111 C 0 O 0 0 0 
101 - 111 :-3 - -1 = -2 : 101 + 000 + 1 = 110 C 0 O 0 0 0 
110 - 000 :-2 - 0 = -2 : 110 + 111 + 1 = 110 C 1 O 0 0 0 
110 - 001 :-2 - 1 = -3 : 110 + 110 + 1 = 101 C 1 O 0 0 0 
110 - 010 :-2 - 2 = -4 : 110 + 101 + 1 = 100 C 1 O 0 0 0 
110 - 011 :-2 - 3 = -5 : 110 + 100 + 1 = 011 C 1 O 1 1 1 X 
110 - 100 :-2 - -4 = 2 : 110 + 011 + 1 = 010 C 1 O 0 0 0 
110 - 101 :-2 - -3 = 1 : 110 + 010 + 1 = 001 C 1 O 0 0 0 
110 - 110 :-2 - -2 = 0 : 110 + 001 + 1 = 000 C 1 O 0 0 0 
110 - 111 :-2 - -1 = -1 : 110 + 000 + 1 = 111 C 0 O 0 0 0 
111 - 000 :-1 - 0 = -1 : 111 + 111 + 1 = 111 C 1 O 0 0 0 
111 - 001 :-1 - 1 = -2 : 111 + 110 + 1 = 110 C 1 O 0 0 0 
111 - 010 :-1 - 2 = -3 : 111 + 101 + 1 = 101 C 1 O 0 0 0 
111 - 011 :-1 - 3 = -4 : 111 + 100 + 1 = 100 C 1 O 0 0 0 
111 - 100 :-1 - -4 = 3 : 111 + 011 + 1 = 011 C 1 O 0 0 0 
111 - 101 :-1 - -3 = 2 : 111 + 010 + 1 = 010 C 1 O 0 0 0 
111 - 110 :-1 - -2 = 1 : 111 + 001 + 1 = 001 C 1 O 0 0 0 
111 - 111 :-1 - -1 = 0 : 111 + 000 + 1 = 000 C 1 O 0 0 0 

所以除了你将有一个这样的(根据定义签名的溢出标志是当你解释比特签订)

011 + 001 : 3 + 1 = 4 :011 + 001 + 0 = 100 C 0 O 1 1 1 X 

所以1 + 3(001 + 011)=位模式100,在三位二进制补码世界中的值为-4,所以1 + 3 = -4这是错误的,因此有符号溢出,我们不能用三位表示+4。在x86上,这相当于127 + 1(0x7F + 0x01)的8位加法。基本上所有正数的组合都会导致128(或更大)的126 + 2,125 + 3 124 + 4等等。都有这个问题。

010 + 010 : 2 + 2 = 4 :010 + 010 + 0 = 100 C 0 O 1 1 1 X 

我做了加法和减法。减法逻辑上来自两个补充概念反转并加1.所以减法c = a-b使用相反的c = a +(-b),并且从二进制补码我们知道这意味着c = a +((〜b)+1 )或c = a + b + 1。加法是c = a + b + 0,后者1或0是lsbit的进位。

现在采取这一步进一步加法c = a + b + cin,减法c = a +〜b +〜cin。你反转第二个操作数和进位。但是这是处理器特定的,因为一些处理器反转执行(我认为x86是一个),使其成为“借位”而不是“进位”进行减法。然后,如果你有这些指令(这些逻辑对于那些不会在一个sbb上反转的cin),那么混淆了用于加入进位或用借位进行减法的概念

我计算了溢出标志三个不同(真的? ) 方法。

ov=0; 
    if((ra&4)==(rc&4)) ov = ((rd>>3)&1)^((rd>>2)&1); 
    ovx = ((rd>>3)&1)^((re>>2)&1); 
    ovy=0; 
    if((ra&4)==(rc&4)) if((rd&4) != (ra&4)) ovy=1; 

OV就像是在你的文字,你正在阅读,如果符号相同进入加法器则溢是开展与结果的最高位异或运算。

OVX溢出携带的定义相比,进行最高位

和ovy是一条捷径,如果你想弄清楚溢出,但不具有对寄存器的N + 1位可以使用(如何你会发现使用32位变量溢出的语言,你无法看到执行吗?像我在代码中显示的那样,有许多方法,但是也可以简单地检查msbits的工作方式)。

然后,如果结果不符合可用位数然后溢出,那么最后的X也是溢出的定义。对于无符号(进位)和有符号(溢出)溢出,为真。因为这是关于溢出的,那么这是关于有符号数的,所以对于我的三位系统,只能从-4到+3任何高于+3或低于-4的任何值,并且打印输出结尾处的X表明,所以这是在这个简化示例中显示溢出的第四种方式。

同样,上面的输出是通用逻辑如何实现的,然后您会看到处理器系列与执行标志之间的细微差别,即某些处理器反转执行以使其成为借位并且一些处理器不执行相减。真正的真实逻辑会将一堆3个输入(两个操作数并带入)两个输出(结果和执行)加法器级联在一起,尽管在HDL语言中可以使用加号运算符并解决此问题(并且在这些语言中也需要一个这些快捷方式没有检查进位与执行)

如果你使用booloean方程,你应该能够发现计算溢出的三种方法是等价的,不仅仅是在这里的实验,而是在数学上。

0

以及我在你的号码中看到的东西之一是数字是“0111 1111”+ “0000 0101”都是正数,因为左边的第一个数字是0,但在第二个示例中,第一个数字是“1111 1111 “这意味着它是负面的,第二个是”0000 0101“,这也意味着它是积极的!请记住:OF(溢出标志)何时设置,两个数字具有相同的符号。在第二个因为数字的两个不同符号的OF = 0;