原码,补码,反码的应用。
计算机专业的同学应该知道,课本中对原码反码补码的介绍大致是这样的几句话。
正数
- 正数的原码是他的本身。
- 正数的反码还是等于原码。
- 正数的补码等于他的原码。
负数
-
负数的原码等于该数值的二进制,最高位表示符号位,正数取0,负数取1。
-
负数的反码就是他的原码除符号位外,按位取反。
-
负数的补码等于反码+1。
根据冯~诺依曼提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器(据说一开始是有的,后来由于减法器硬件开销太大,被废了 )
所以,计算机中的没法直接做减法的,它的减法是通过加法来实现的。你也许会说,现实世界中所有的减法也可以当成加法的,减去一个数,可以看作加上这个数的相反数。当然没错,但是前提是要先有负数的概念。这就为什么不得不引入一个该死的符号位。
原码的介绍
我们假定一个数字在计算机中用1个bit来存储,那么占用的大小就是8个字节,而计算机中为了表示正负数一般使用最高位来表示数字的正负,正数用0表示,负数用1表示,而数值的大小用剩余的位数表示。
接下来我们以13为例。
//13转换成二进制为1101,因为我们假设是1个bit存储,那么
00001101 == 13
//而-13和13的转换单单把最高位换成1
10001101 == -13
接下来,我们使用原码进行简单的运算。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)