我是靠谱客的博主 心灵美飞鸟,最近开发中收集的这篇文章主要介绍无符号、有符号数运算判溢出,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

无符号数的运算(溢出看CF)

有符号数运算(溢出看OF)(都是补码进行运算,因为补码的符号位可以直接参与运算一套电路就ok)

例题 

 第一题 

第二题


无符号数的运算(溢出看CF)

(1)两个无符号数相加,和为正数,当和超过其位数所允许的范围时,向更高位进位,用CF(进位标志位)表示。

当CF为1的时候,这个数就溢出了

我们知道8位全1,最大可以表示255

 (2)两个无符号数相减(借1当2)被减数大于或等于减数,无借位,结果为正,被减数小于减数,有借位,结果为负

 

 对于无符号数进行减法运算,其结果的符号用进位来判断:CF=0(无借位)结果为正;CF=1(有借位)结果为负

有符号数运算(溢出看OF)(都是补码进行运算,因为补码的符号位可以直接参与运算一套电路就ok)

 

8位补码表示的范围是-128到+127,不在这个范围就是溢出

两个整数相加得到负数溢出,两个负数相加得到整数溢出

一个正数+一个负数是一定不会溢出的。

溢出会让OF(Overflow Flag)=1

将多位二进制拆成多部分运算时,数的低位部分均为无符号数,只有高位才为符号数

溢出不同于补码运算中的进位或借位丢失

 没有超过-128,切两个负数相加还是负数不溢出,OF=0,但是有进位CF=1

 其实判溢出不是看结果,看最高位和次高位就可以

概括一下这个图 

OF=最高位的进位和次高位的进位做异或(相同出零,不同出1)就是OF的值

有符号判溢出说人话就是看看,最高位的进位和次高位的进位是不是相同,不相同就是溢出了OF=1

例题 

 第一题 

 

这种题要是没给出,10进制的数,就要用  [x+y]补 =x补+y补    [x-y]补=x补+-y补

知道y的补码,-y的补码为全部取反+1,包括符号位。要区分开已知原码求补码

但是它给出了就直接加完在求补码  这个题也就是变成了求123的补码,和求-125的补码

答案:01111011   10000011

第二题

 答案:B

无符号溢出看CF

最后

以上就是心灵美飞鸟为你收集整理的无符号、有符号数运算判溢出的全部内容,希望文章能够帮你解决无符号、有符号数运算判溢出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部