定点数运算及溢出检测(网安计组)

定点数运算及溢出检测

[ x ] 补 + [ y ] 补 = [ x + y ] 补      ( m o d M ) [ x ] 补 − [ y ] 补 = [ x − y ] 补 = [ x ] 补 + [ − y ] 补    ( m o d M ) [x]_补+[y]_补 = [x+y]_补 \ \ \ \ (mod M)\\ [x]_补-[y]_补 = [x-y]_补 =[x]_补+[-y]_补 \ \ (mod M) [x]+[y]=[x+y]    (modM)[x][y]=[xy]=[x]+[y]  (modM)

取反技巧:

通过右向左扫描 [ Y ] 补 [Y]_补 [Y],在遇到数字1及之前,直接输出遇到的数字,遇到1之后,取反输出,即可得到 [ − Y ] 补 [-Y]_补 [Y],反之亦然!

溢出:运算结果超出了某种数据类型的表示范围。

溢出的检测方法

(1) 对操作数和运算结果的符号位进行检测

​ 当结果的符号位与操作数的符号不相同时就表明发生了溢出

​ (设 X 0 X_0 X0 Y 0 Y_0 Y0 为参加运算数的符号位, S 0 S_0 S0 为结果的符号位)

V = X 0 Y 0 S 0 ‾ + X 0 Y 0 ‾ S 0 V=X_0Y_0\overline {S_0}+\overline{X_0Y_0}S_0 V=X0Y0S0+X0Y0S0

​ 当V=1时,运算结果溢出

(2)对最高数据位进位和符号进位进行检测

​ 设运算时最高数据位产生的进位为 C 1 C_1 C1,符号位产生的进位为 C 0 C_0 C0

​ 溢出检测电路为: V = C 0 ⊕ C 1 V= C_0 ⊕ C_1 V=C0C1

(3)用变型补码

[ X ] 补 = X f 1 X f 2 . X 1 X 2 X 3 … X n    m o d 2 n + 2 [X]_补 = X_{f1}X_{f2}. X_1X_2X_3…X_n \ \ mod 2^{n+2} [X]=Xf1Xf2.X1X2X3Xn  mod2n+2

​ 溢出的判断:

V = X f 1 ⊕ X f 2 V=X_{f1}⊕X_{f2} V=Xf1Xf2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值