问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

原码 反码 补码介绍

创作时间:
作者:
@小白创作中心

原码 反码 补码介绍

引用
CSDN
1.
https://blog.csdn.net/cnds123/article/details/106294995

在计算机科学中,原码、反码和补码是表示有符号整数的三种方式。它们不仅影响着计算机内部的数据存储方式,还决定了计算机如何进行加减运算。本文将详细介绍这三种编码方式的定义、特点以及它们在计算机中的应用。

冯·诺依曼提出的经典计算机体系结构框架,一台计算机由运算器、控制器、存储器、输入和输出设备组成。其中运算器,只有加法运算器。计算机中的没法直接做减法的,它的减法是通过加法来实现的。原码、反码、补码的产生过程,就是为了解决,计算机做减法和引入符号位(正号和负号)的问题。

任何存储于计算机中的数据,其本质都是以二进制码存储。

原码

原码是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。

反码

正数的反码等于其原码;负数的反码就是其的原码除符号位外,按位取反。

补码

正数的补码等于其原码;负数的补码等于其反码,再+1。

为了简化明了,下图给出四位二进制的补码、反码、源码表示法:

正数的 原码、反码、补码都一样,最高位表示符号位——为‘0’——表示正号

负数的 原码,数值部分和正数原码数值部分一样,最高位表示符号位——为‘1——表示负号。负数的反码就是其原码除符号位外,按位取反。负数的补码等于其反码+1

细心的读者可以看到0的源码和反码分正负,有两种形式。0的补码不分正负,只有一种形式。

  • [+0]原码=0000 , [-0]原码=1000
  • [+0]反码=0000 , [-0]反码=1111
  • [0]补码=0000,对于补码0用0000表示,1000表示-8——而非-0的补码!这样补码中-0不存在了!

4位二进制表示有符号数,原码、反码范围是[-77],补码范围是[-87]

引入补码后,其实减去一个数,对于数值有限制,有溢出的运算(模运算)来说,其实也相当于加上这个数的补码,把减法当成加法时并不是必须要引入符号位的。

补码运算

补码加法运算: [x]补+[y]补=[x]补+[y]补

补码减法运算:[x]补 - [y]补 = [x]补 +[-y]补

下面以4位二进制数为例看看:不使用减法如何计算0110(6)-0010(2)

0110(6)-0010(2)=0110(6)+1110(14)=10100(20=16+4),对于四位二进制数,最大只能存放4位(硬件决定了),如果我们低四位,正好是0100(4),正好是我们想要的结果。

使用补码,减法运算可以转化为加法运算,对计算机硬件而言实现加法运算是比较容易的,而且速度较快。

附:原码,反码,补码杂谈https://www.imooc.com/article/16813?block_id=tuijian_wz

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号