请问,在80x86汇编中提到的溢出标志和进位标志,这两者有什么区别啊??搞不明白啊

上传的附件
你的回答被采纳后将获得: 8点积分 (将会扣除手续费1点积分。)

keyboard_arrow_left上一篇 : 实习生去那些公司更容易通过呢? 书里面的第三章反复提到的520.exe到底是个什么程序啊!求大佬解释。 : 下一篇keyboard_arrow_right

8个回答

Tattoo
2019-02-25 09:18:23

汇编中,溢出标志和进位标志有什么区别??

miruos
2019-02-25 17:45:05

顾名思义~ 一个是溢出啊,一个是进位啊

Benjamin
2019-02-26 10:07:21

溢出标志是OF,表示有符号数运算结果是否超出范围,运算结果已经不正确
进位标志是CF,表示无符号数运算结果是否超出范围,运算结果仍然正确

Viewer
2019-02-26 12:31:57

溢出是针对有符号数来说的,无符号数没有溢出问题,溢出标志OF和进位标志CF是两个意义不同的标志:

  • 进位标志表示的是无符号数运算结果是否超出范围,但运算结果仍然正确

  • 而溢出标志表示的是有符号数运算结果是否超出范围,运算结果已经不正确

primadonna
2019-02-27 09:08:56

一个用来标志溢出的,就是超过值的的表示范围了;一个用来标志进位的,表示有进位!
你是不明白什么啊?

Badguy
2019-04-10 11:19:24

一个溢出,一个是进位啊

coldplay
2019-05-05 15:02:12

因为有符号数和无符号数的情况处理不一样,需要有溢出和进位两个标志配合才能区分. 以8位二进制为例,有符号数,最高位7位为符号位,第6-0位的数据溢出时是到溢到符号位的,而符号位再有溢出才会置进位,;对无符号数,你还要看进位位,不用关心溢出位.

Banana
2020-10-09 21:10:58

都是cf,溢出是结果位数超过了当前寄存器的最大数位,cf存储的不一定是进位。进位是指产生了进位。有进位不一定数据无效,溢出数据一定无效。

精彩评论

  • python的web框架
    百度一下
    2020-10-19 15:52:27 thumb_up( 2 )
  • 自学Python语言,是看书好还是看视频好呢?
    sp
    2020-11-22 14:46:05 thumb_up( 1 )
  • "WRITE-BUG技术共享平台"哪个版块你最喜欢
    课内资源吧
    2020-11-19 21:34:37 thumb_up( 1 )
  • 请教大家如何有效地自学课外知识呢?
    多多学习,多多交流。
    2020-11-17 19:27:44 thumb_up( 1 )
  • 你上传资源到"WRITE-BUG技术共享平台"了吗
    传啦O(∩_∩)O
    2019-02-10 16:10:25 thumb_up( 4 )
  • "WRITE-BUG技术共享平台"哪个版块你最喜欢
    最喜欢课内资源板块,因为我可以在里面找到与我学习相关的项目,这样我可以根据项目还学习总体思路
    2020-11-19 14:43:20 thumb_up( 1 )
  • 请教大家如何有效地自学课外知识呢?
    多学多看多操作
    2020-11-27 17:00:58 thumb_up( 1 )
  • 你上传资源到"WRITE-BUG技术共享平台"了吗
    我传了好多,也获得了好多积分!!!之前内测的时候我没有购买永久VIP,现在想要永久VIP却没有了。。。
    2019-02-09 17:23:00 thumb_up( 7 )
  • "WRITE-BUG技术共享平台"哪个版块你最喜欢
    课内资源模块,可以学到好多
    2020-11-18 19:51:59 thumb_up( 1 )
  • [算法问题] 谁逃课了
    哈哈,一开始还以为是吐槽帖,没想是问问题啊。。。顺便解答下你的问题吧。 bA, bB, bC, bD, bE 来表示A、B、C、D、E,true表示逃课,false表示不逃课,原理比较简单,就是暴力枚举 bA, bB, bC, bD, bE,然后判断是否满足给出的 5 个条件,代码如下所示: bool judge(bool bA, bool bB, bool bC, bool bD, bool bE){ bool bRet = false; do { // (1)如果A逃课,B也一定逃课 if (true == bA) { if (true == bB) { // 条件(1)成立 } else { // 条件(1)不成立 break; } } // (2)B和C中有且只有一个人参与逃课 if (true == (bB || bC) && false == (bB && bC)) { // 条件(2)成立 } else { // 条件(2)不成立 break; } // (3)C和D要么都逃,要么都不逃 if (true == bC) { if (true == bD) { // 条件(3)成立 } else { // 条件(3)不成立 break; } } else { if (false == bD) { // 条件(3)成立 } else { // 条件(3)不成立 break; } } // (4)D和E至少有一个人逃了 if (true == (bD || bE)) { // 条件(4)成立 } else { // 条件(4)不成立 break; } // (5)如果E逃课,则A和D一定参与逃课 if (true == bE) { if ((true == bA) && (true == bD)) { // 条件(5)成立 } else { // 条件(5)不成立 break; } } // 所有条件都满足 bRet = true; } while (false); return bRet;}int _tmain(int argc, _TCHAR* argv[]){ int a = 0, b = 0, c = 0, d = 0, e = 0; bool bA = false, bB = false, bC = false, bD = false, bE = false; for (a = 0; a < 2; a++) { for (b = 0; b < 2; b++) { for (c = 0; c < 2; c++) { for (d = 0; d < 2; d++) { for (e = 0; e < 2; e++) { bA = (bool)a; bB = (bool)b; bC = (bool)c; bD = (bool)d; bE = (bool)e; // 判断 if (true == judge(bA, bB, bC, bD, bE)) { if (true == bA) { printf("A"); } if (true == bB) { printf("B"); } if (true == bC) { printf("C"); } if (true == bD) { printf("D"); } if (true == bE) { printf("E"); } printf("\n"); } } } } } } return 0;} 运行程序,结果显示:CD,则表示C和D逃课满足上述5个条件~~~
    2020-07-12 12:15:34 thumb_up( 5 )
eject