51单片机的溢出问题

我记得溢出的意思是超出最大值,可51的溢出标志位OV有点不太理解例如:10000101+11111111=110000101这明显11111111就是最大值,加上任何数都... 我记得溢出的意思是超出最大值,可51的溢出标志位OV有点不太理解

例如: 1000 0101
+ 1111 1111
=1 1000 0101

这明显1111 1111 就是最大值,加上任何数都会溢出的啊,可为什么ov=0
而且51中说只有第六或第七位中有一位进位或借位OV才置位,这话怎么理解?
展开
 我来答
安装机电
2012-11-02 · TA获得超过2502个赞
知道大有可为答主
回答量:1739
采纳率:45%
帮助的人:1097万
展开全部
一个字节只有8位,最大数是1111 1111,+0时不会产生溢出,所以标志位OV=0,当最高位的运算产生进位或借位时OV=1,在编程时,当加法或减法时,并不确定所得的结果是什么,每次需要检查OV位的值用相应的程序去处理有借位和进位的不同情况。如单字节运算中,寄存器中已是1111 1111,加立即值1结果还放在寄存器中,则寄存器中的值加法后变为0000 0000,但OV被置位=1,此时只要检查OV值,如果为1就将另一个寄存器中的值+1,如果这个寄存顺加后OV值又成为1则再另个寄存器中加1,按照所用的字节数,不断检查,就可以进行多个字节的加法运算。简单单片机的指令最多给出4个字节的加法运算指令,但可以用这种方法扩展为20个字节的加法运算,甚至更多,条件是片内的RAM够用。
意法半导体(中国)投资有限公司
2023-06-12 广告
溢出的解释:充满某个容器并向外流出。 例如:缓冲区是内存中存放数据的地方。在程序试图将数据放到计算机内存中的某一位置,但没有足够空间时会发生缓冲区溢出。 再如:单片机的存储程序的空间(FLASH)是有限的,如果你的程序太大,或者空间分配得不... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
一剑出血
高粉答主

推荐于2017-08-17 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
有深入探究的意愿,很好。

OV标志位是针对有符号数据类型计算的溢出标志,所以其规则是对bit6(有效数据最高位)或bit7(符号位)其中一位发生进位或借位时,OV才会置位。
以你举的例子来解释,运算时bit6和bit7同时发生进位了,所以OV并不置位。或者从另一个角度来说,前一个二进制补码代表-123,后一个二进制补码代表-1,二者相加的结果是-124——并没有超过八位有符号整型-128~+127的有效范围,所以并不溢出。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式