本文最后更新于 20 天前,其中的信息可能已经有所发展或是发生改变。
位(bit):计算机中最小的数字单位,是“二进制数字”(binary digit)的缩写,它只能取 或 两个值,因此bit被称作“二进制位”。
字节(byte): 个bit组成 个字节(byte),通常也是计算机中最常见的数据大小单位,用于表示 个二进制位的数字或字符。
在计算机中,一个bit指的就是一个二进制位,即最小的数字单位。
例如:
具体地:
按照上述过程,理论上一个字节(8个bit位)最大表示的数值范围为:
由于现实计算中不仅存在正数,还存在负数,因此按照上节中将一个字节中所有位都用来表示数是不合理的。
因此,在一些语言中区分了有符号数和无符号数,像上节中表示的是无符号数的表示方法。
在使用原码表示法时,二进制数的最高位表示符号位, 表示正数, 表示负数。
以使用 位二进制原码为例,表示 的二进制原码的步骤如下:
因此,在 位二进制原码表示法中, 的二进制原码为 。
按照上述过程,在原码表示下,理论上一个字节(8个bit位)最大表示的数值范围为:
需要注意,这种方式的缺点是正数和负数的加减法需要额外处理符号位,较为复杂。
例如计算:
怎么会是呢???显然是不对滴,因此我们又引入了反码。
反码是一种用于计算机中表示负数的二进制数表示法。在反码中:
以使用 位二进制原码为例,表示 的二进制反码的步骤如下:
因此,在 位二进制反码表示法中, 的二进制反码为 。
现在计算:
注意:反码直接计算的结果需要取反才能得到原码,因此对 的非符号位全部取反得到 。
显然是对的吧,数值是对了,但是出现了“+0”和“-0”的问题,依然不合理,因此我们最终引入了补码。
补码是一种计算机中表示有符号整数的二进制数表示法,也是一种将负数转化为正数的方法。在补码中:
以使用 位二进制原码为例,表示 的二进制反码的步骤如下:
因此,在 位二进制反码表示法中, 的二进制补码为 ,由于 的二进制补码为 ,故我们将原本为 表示为最小值 。
按照上述过程,在补码表示下,理论上一个字节(8个bit位)最大表示的数值范围为:
现在计算:,其中多出来的一位 由于超过了补码的表示范围,故造成了溢出,最终的计算结果为 。
由此,我们通过补码可以将两个数的减法运算变为加法运算,但是由于符号位的存在,补码很难直接判断真值大小,因此引入移码的概念。
移码是一种为了方便计算二进制浮点数而设计的表示方法:
举例:
例如 的真值为 :
当 时:
注意:
证明:
,也相当于符号位取反。
根据国际标准 IEEE 754,任意一个二进制浮点数 可以表示成下面的形式: V = (-1)^S \times M \times 2^E
比如, 对于十进制的 对应的二进制为:,相当于:。所以, 为 , 为 , 为 。因此,对于浮点类型,最大值和最小值不仅取决于符号和尾数,还有它的阶码,所以浮点类型的大致取值范围:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有