原码运算、反码运算、补码运算和溢出

1.原码运算

原码中的符号位仅用来表示数的正、负,不参加运算。进行运算的只是数值部分。原码运算时,应首先比较两个数的符号,若两数的符号相同,则可将两个数的数值相加,最后给结果附上相应的符号;若两数的符号不同,则需比较两数的数值大小,然后将数值较大的数减去数值较小的数,并将数值较大的数的符号作为最后结果的符号。

2.反码运算

由反码的定义可以得到反码加、减运算规则如下:
[S2+S1]反= [S2]反+[S1]反
[S2-S1]反= [S2]反+[-S1]反
反码的加、减运算规则表明:两数和的反码等于两数的反码之和,而两数差的反码也可以用加法来实现。
运算时,符号位和数值位一样参加运算,如果符号位产生进位,则需将此进位加到和数的最低位,称之为“循环进位”。运算结果的符号位为0时,说明是正数的反码,与原码相同;运算结果的符号位为1时,说明是负数的反码,应再对运算结果求反码,才得到原码。

3.补码运算和溢出

补码运算同反码运算一样,两数差的补码可以用两数补码的加法来实现。补码加、减运算规则是:
[S2+S1]补=[S2]补+[S1]补
[ S2-S1]补=[S2]补+[-S1]补
补码运算时,不必判断数的正负,符号位直接参与运算能得到正确的结果,如果符号位产生了进位,则此进位可“略去”,符号位进位的自然丢失不会影响结果的正确性。运算结果符号位为0时,说明是正数的补码,与原码相同。运算结果符号位为l,说明是负数的补码,应对结果再求补码才得原码。
从上述的讨论可以看出,原码、反码和补码各有优缺点。原码表示法简单方便,但原码减法必须做真正的减法,不能用加法来代替,因此实现原码运算所需的逻辑电路比较复杂。反码和补码的优点是只需用加法逻辑电路便可实现。并且用补码进行减法运算很方便,它只需进行一次算术相加。而用反码进行减法运算,若符号位产生进位就需进行两次算术相加。而且反码还有一个缺点,就是具有两个零值,这容易在计算过程中产生歧意。
从前面所讲的内容可知,n位二进制数S补码能够表示的有符号整数的范围是:
-2^(n-1) ≤ S ≤ +2^(n-1)-1
n位的补码运算如果结果超出了-2(n-1)~+2(n-1)-1的范围,就称为发生了“溢出”。判断溢出的方法主要根据符号位的进位和最高数值位的进位状态来判断结果有无溢出,设最高位向符号位的进位用CP表示,符号位的进位用CS表示,则有:
若CP⊕CS=0,表示无溢出,溢出标志V=0;
若CP⊕CS=1,表示有溢出,溢出标志V=1。

例1:0111 1111(十进制+127)与 0000 0001(十进制+1)相加
二进制相加的结果为1000 0000,其中最高位(符号位)产生了进位,即C1=1;次高位(数值最高位)未产生进位,即C=0。由于C1≠C,说明这个运算产生了溢出(计算结果为十进制-128)。

例2:0111 1111(十进制+127)与 1000 0001(十进制-127)相加
二进制相加的结果为0000 0000,其中最高位(符号位)产生了进位,即C1=1;次高位(数值最高位)产生了进位,即C=1。由于C1=C,说明这个运算未产生溢出(计算结果为十进制0)。

例3:1000 1111(十进制-113)与 1001 0000(十进制-112)相加
二进制相加的结果为0001 1111,其中最高位(符号位)产生了进位,即C1=1;次高位(数值最高位)未产生进位,即C=0。由于C1≠C,说明这个运算产生了溢出(计算结果为十进制+31)。

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第1页。北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第1页。实验二实验报告表 北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第1页。 北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第1页。 实验名称: 学号 姓名: 班级: 实验时间: 实验报告表2-1 数值型数据在计算机中的二进制实验记录表 十进制整数分类 输入十进制整数 内存整型数据 内存地址号 任意正整数 7 0000011100000000 0001000100010002 任意负整数 -5 1111101111111111 0001000300010004 最大数 32767 11111111011111111 0001000500010006 最小数 -32768 000000001000000 0001000700010008 绝对值最小数 0 0000000000000000 000100090001000A 绝对值最大数 -32768 000000001000000 0001000700010008 十进制实数分类 输入十进制实数 内存实型数据 尾数部分 阶码 阶码的数学表示 任意正实数 2.2 110011000000110001000000 11001101 1 任意负实数 -2.2 110011000000110011000000 11001101 1 最大数 99.9999 111111111100011101000010 11110011 6 最小数 -99.9999 111111111100011111000010 11110011 6 绝对值最小数 0 000000000000000000000000 00000000 0 绝对值最大数 99.9999 111111111100011101000010 11110011 6 说明:本实验对计算机内存数据的存放拟定为: 整数用两个字节存储,并负数只考虑原码; 实数用4个字节存储,其中阶码部分占一个字节。 实验报告表2-2 其他进制数据与二进制转化实验记录表 其他进制 实验数据 二进制 十进制 6 110 八进制 7 111 十六进制 A 1010 实验报告表2-3 数据的原码、补码反码表示实验记录表 正十进制数 113 负十进制数 -103 原码 01110001 原码 11100111 反码 01110001 反码 10011000 补码 01110001 补码 10011001 实验报告表2-4 二进制算术运算实验记录表 操作数一 操作数二 运算符 是否溢出 实验结果 正确结果 溢出对结果产生了什么影响? 北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第2页。北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第2页。56 北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第2页。 北理大学计算机实验基础-实验二-实验报告表答案全文共2页,当前为第2页。 25 - 否 31 31 结果正负及数值均改变 78 69 + 是 -109 147 -78 69 - 是 109 -147 实验报告表2-5溢出实验记录表 问题 简要回答 什么时候出现溢出情况? 最高存储位进位时发生溢出情况。即超过8位数。 实验报告表2-6浮点数的小数点浮动实验记录表 十进制数 二进制数 3.14592653589793238462643383297 01000100100101010110110111000000 精度 28 有效位 3 表示范围 7~-19 实验报考表2-7 表示浮点数的二进制串中阶码位数改变实验记录表 阶码位数 二进制数 精度 有效位 表示范围 4 01000100100101010110110111000000 28 3 7~-19 5 01000010010010101011011011100000 27 4 15~-20 6 01000001001010101101101110000000 26 5 31~-21 7 01000000100100101010110110111000 25 6 63~-22 北理大学计算机实验基础-实验二-实验报告表答案

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广大菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值