OF CF 标志位的判定

OF:最高位进位⊕次高位进位(对带符号数才有意义)

最 高 位 进 位 : 进 位 出 去 ( 溢 出 去 ) \color {green}{最高位进位:进位出去(溢出去)}

次 高 位 进 位 : 进 位 到 最 高 位 ( 对 带 符 号 数 来 说 即 符 号 位 ) \color {green}{次高位进位:进位到最高位(对带符号数来说即符号位)}

CF: sub⊕C(⊕为异或,CF对无符号数才有意义)

作 减 法 则 s u b 为 1 \color {green}{作减法则sub为1} sub1

C 为 进 位 输 出 — — 最 高 位 有 无 进 位 出 去 ( 溢 出 去 ) \color {green}{C为进位输出——最高位有无进位出去(溢出去)} C

举例:

假设n=8,机器数X和Y的真值分别为x和y
在这里插入图片描述

OF:

来看带符号那一行:

0xB0——1011 0000 (-80)
0x8C——1000 1100(-116)

X+Y:0011 1100 (60) 8 位 机 器 数 表 示 范 围 [ 127 , − 128 ] , 负 溢 出 后 加 上 2 n , 这 题 中 即 加 上 256 \color {green}{8位机器数表示范围 [127,-128] , 负溢出后加上2^n,这题中即加上256} 8[127,128],2n256

− 80 − 116 + 256 = 60 \color {green}{-80-116+256=60} 80116+256=60

关于溢出的处理,可以参照这个博客:计算机内加减法的溢出处理

对 原 数 X ( 原 数 + 加 数 = 结 果 ) : \color {red}{对原数X(原数+加数=结果):} X+=

最 高 位 进 位 为 1 ( 最 高 位 1 + 1 , 进 位 ) , 次 高 位 没 有 进 位 ( 0 + 0 ) , 1 ⊕ 0 = 1 , 则 O F 为 1 \color {red}{最高位进位为1(最高位1+1,进位),次高位没有进位(0+0),1⊕0=1,则OF为1} 11+10+010=1OF1

CF:

来看无符号那一行:

0xB0——1011 0000 (176)
0x8C——1000 1100(140)

X+Y:0011 1100 (60) 8 位 机 器 数 表 示 范 围 [ 127 , − 128 ] , 正 溢 出 后 减 去 2 n , 这 题 中 即 减 去 上 256 \color {green}{8位机器数表示范围 [127,-128] , 正溢出后减去2^n,这题中即减去上256} 8[127,128],2n256

对 原 数 X ( 原 数 + 加 数 = 结 果 ) : \color {red}{对原数X(原数+加数=结果):} X+=

加 法 , s u b = 0 \color {red}{加法,sub=0} sub=0

最 高 位 进 位 ( 1 + 1 , 溢 出 去 了 ) , 进 位 输 出 C = 1 \color {red}{最高位进位(1+1,溢出去了),进位输出C=1} 1+1C=1

C F = s u b ⊕ C = 0 ⊕ 1 = 1 \color {red}{CF=sub⊕C=0⊕1=1} CF=subC=01=1

最 后 一 提 : 计 算 机 对 带 / 无 符 号 数 的 机 器 码 统 一 处 理 \color {blue}{最后一提:计算机对带/无符号数的机器码统一处理} /

O F , C F 等 标 志 位 是 由 机 器 码 运 算 结 果 决 定 的 , 是 否 为 带 符 号 数 并 不 影 响 \color {blue}{OF,CF等标志位是由机器码运算结果决定的,是否为带符号数并不影响} OF

所 以 , 才 会 有 带 不 带 符 号 它 的 O F , S F , C F 都 一 样 \color {green}{所以,才会有带不带符号它的OF,SF,CF都一样} OFSFCF

终极简单的判定方法:

求OF就把机器码转成带符号数然后运算,看有没有溢出

求CF同理,转成无符号数,然后运算看有没有溢出

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值