单片机自定义的标志位作用
答案:1 悬赏:60
解决时间 2021-01-23 18:08
- 提问者网友:几叶到寒
- 2021-01-22 20:36
单片机自定义的标志位作用
最佳答案
- 二级知识专家网友:一叶十三刺
- 2021-01-22 21:57
明确: 溢出是针对有符号数来说的,无符号数没有溢出问题
注意: 处理器内部以补码表示有符号数,8位表达的整数范围是:+127~-128,16位表达的范围是:+32767~-32768
定义: 如果运算结果超出能够表达的数据范围,就产生了溢出
结论: 有溢出,说明有符号数的运算结果不正确
标志: OF溢出标志(Overflow Flag)。若算术运算的结果有溢出,则OF=1;否则OF=0。
示例: 3AH+7CH=B6H,就是58+124=182,这个8位运算的结果已经超出-128~+127范围,产生溢出,故OF=1。另一方面,补码B6H表达真值是-74,显然运算结果也不正确。
区别: 溢出标志OF和进位标志CF是两个意义不同的标志。进位标志表示的是无符号数运算结果是否超出范围,但运算结果仍然正确;而溢出标志表示的是有符号数运算结果是否超出范围,运算结果已经不正确。用8个二进制位表达无符号数整数的范围是:0~+255;16位表达的范围是:0~+65535。
对比: 3AH+7CH=B6H,无符号数运算:58+124=182,范围内,无进位;有符号数运算:58+124=182,范围外,有溢出。
AAH+7CH=(1)26H,无符号数运算:170+124=294, 范围外,有进位;有符号数运算:-86+124=38,范围内,无溢出。
处理: 处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。
判断: 计算机中利用最高位和次高位都有进位判断有溢出。我们可以利用一个简单的规则:只有当两个相同符号数相加(含两个不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出(因为,此时的运算结果显然不正确);其他情况下,则不会产生溢出。
注意: 处理器内部以补码表示有符号数,8位表达的整数范围是:+127~-128,16位表达的范围是:+32767~-32768
定义: 如果运算结果超出能够表达的数据范围,就产生了溢出
结论: 有溢出,说明有符号数的运算结果不正确
标志: OF溢出标志(Overflow Flag)。若算术运算的结果有溢出,则OF=1;否则OF=0。
示例: 3AH+7CH=B6H,就是58+124=182,这个8位运算的结果已经超出-128~+127范围,产生溢出,故OF=1。另一方面,补码B6H表达真值是-74,显然运算结果也不正确。
区别: 溢出标志OF和进位标志CF是两个意义不同的标志。进位标志表示的是无符号数运算结果是否超出范围,但运算结果仍然正确;而溢出标志表示的是有符号数运算结果是否超出范围,运算结果已经不正确。用8个二进制位表达无符号数整数的范围是:0~+255;16位表达的范围是:0~+65535。
对比: 3AH+7CH=B6H,无符号数运算:58+124=182,范围内,无进位;有符号数运算:58+124=182,范围外,有溢出。
AAH+7CH=(1)26H,无符号数运算:170+124=294, 范围外,有进位;有符号数运算:-86+124=38,范围内,无溢出。
处理: 处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。
判断: 计算机中利用最高位和次高位都有进位判断有溢出。我们可以利用一个简单的规则:只有当两个相同符号数相加(含两个不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出(因为,此时的运算结果显然不正确);其他情况下,则不会产生溢出。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯