电工学习网

 找回密码
 立即注册
查看: 4826|回复: 2
打印 上一主题 下一主题

原码、反码与补码及其意义

[复制链接]
跳转到指定楼层
楼主
发表于 2015-2-22 08:50:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
(1)数值数据的表示
我们把一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值。机器数有固定的位数,具体是多少位与机器有关,通常是8位或16位。机器数把真值的符号数字化,通常用最高位表示符号,0表示正,1表示负。例如,假设机器数为8位,最高位是符号位,那么在定点整数的情况下,00101110和10010011的真值分别为十进制数+46和-19。
(2)原码:
一个整数的原码是指:符号位用0或1表示,0表示正,1表示负,数值部分就是该整数的绝对值的二进制表示。
例如:假设机器数的位数是8,那么:[+17]原=00010001 [-39]原=10100111
值得注意的是,由于 原码、反码与补码及其意义 所以数0的原码不唯一,有“正零”和“负零”之分。
(2)反码
在反码的表示中,正数的表示方法与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常,用[X]反表示X的反码。例如:
[+45]反 = [+45]原 = 00101101
[-32]原 = 10100000
[-32]反 = 11011111
(3)补码
在补码的表示中,正数的表示方法与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如:
[+14]补 = 10100100
[-36]反 = 11011011
[-36]补 = 11011100
注意:数0的补码的表示是唯一的,即[0]补=[+0]补=[-0]补=00000000
现在我们来看看引进原码、反码与补码这几个概念到底有什么意义。先看下面的例子。例如:X = 52,Y = 38,求X – Y的值。
[X]补 = 00110100
[-Y]原 = 10100110
[-Y]反 = 11011001
[-Y]补 = 11011010
现在我们看看[X]补 + [-Y]补 等于多少?
[52]补:   0 0 1 1 0 1 0 0
[-38]:+) 1 1 0 1 1 0 1 0
      1 0 0 0 0 1 1 1 0

自然丢失
我们可以看到,最高位丢失后,结果(14)正是52-38的值。从这里我们不难体会到通过补码可以把减法运算变成加法运算来做。这样做有什么意义呢?实事求是地说,引入补码意义非同寻常,可以说是先辈们智慧的结晶。因为,通过补码运算,可以把减法运算变成加法运算;而乘法可以用加法来做,除法可以转变成减法。这样一来,加、减、乘、除四种运算“九九归一”了。这对简化CPU的设计非常有意义,CPU里面只要有一个加法器就可以做算术运算了。

1_4_4_clip_image002_0000.gif (419 Bytes, 下载次数: 300)

1_4_4_clip_image002_0000.gif

回复

使用道具 举报

沙发
发表于 2015-2-22 20:12:21 | 只看该作者
感觉楼主在“补码”环节当中[+14]的补码好像表达错误,不知是吗

回复 支持 反对

使用道具 举报

板凳
发表于 2015-2-26 11:29:53 | 只看该作者
感谢楼主 分享长知识了 :lol

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-28 11:51

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表