目录
- 1.进制
- 2.进制转换
- 2.1 R进制转十进制
- 2.2 十进制转R进制
- 2.3 m进制转n进制
- 方法1:十进制中转
- 方法2:直接转化
- 3.进制计算
- 3.1 机器数
- 3.2 编码方式(原码、反码、补码、移码)
- 3.3 表示范围
- 定点整数
- 定点小数
- 3.4 定点表示法
- 4.浮点数
- 4.1 浮点数的表示
- 4.2 浮点数的运算
- 4.3 尾数的表示规格化
1.进制
进制
是数字表示法的一种形式,用于描述一个数在位置“上”的取值范围,不同进制代表着不同进位的规则和不同进制位数的数量。
我们常见的十进制
是一种基数为 10 的数字系统,它使用 0 ~ 9 这十个数字来表示数值,例如 123 就是由 1、2、3 这三个数字组成的十进制数。
而在计算机科学中,最常用的是二进制
,也就是使用 0 和 1 两个数字来表示数值,例如 1011 就是由 1、0、1、1 这四个数字组成的二进制数。
当然,除了十进制和二进制之外,还有八进制
和十六进制
等其他进制形式,它们在不同领域有不同的应用场景。理解进制的概念和运算规则是我们深入理解计算机科学的基础之一,也是实际编程中不可或缺的基本技能。
注意: 二进制符号为 0b
,一般表示为 0b0011
,十六进制符号为 0x
或 H
,可表示为 0x18F
或 18FH
.
补充:生活中的进制有很多,比如秒和分钟就是60进制,60秒进1分钟,60分钟进1小时。
2.进制转换
2.1 R进制转十进制
方法:
位权展开法
:用 R 进制数的每一位乘以 R 的 n 次方,n 是变量,从 R 进制的整数最低位开始,依次为:0,1,2,3……累加。
举例:
6 进制数 5043 转十进制。
- 5043=5*63+0*62+4*61+3*60=5*216+4*6+3*1=1080+27=1107
2.2 十进制转R进制
方法:
除以 R 倒取余数
:用十进制整数除以 R,记录每次取的余数,若商不为 0,则继续除以 R,直到商为 0,而后将所有计算取得的余数根据先后顺序,从右至左排列,即为转换后的 R 进制整数。
举例:
- 问:十进制数200转换为6进制。
- 200➗6=33……2,商为33,余数为2
- 33➗6=5……3,商为5,余数为3
- 5➗6=0……5,商为0,余数为5
- 商为0,停止计算,根据计算先后顺序,从右至左排列为:532
2.3 m进制转n进制
方法1:十进制中转
- 先将 m 进制转化为十进制数,再将十进制数转化为 n 进制数,中间需要通过十进制进行中转。
方法2:直接转化
- 适用于倍数进制之间的转化,以倍数为单位切割较小进制的位数,逐个单位转化。
示例①:二进制转八进制
方法:
- 每3位二进制转换为1位八进制数,二进制数位个数不是3的倍数,则在前面补0(原则是数值不变)。
举例:
二进制数01101转八进制。
- 长度为5位,不是3的倍数,前面补0,为:001 101
- 每3位二进制转换为1位八进制,转换后为:15
示例②:二进制转十六进制:
方法:
- 每4位二进制转换为1位十六进制数,二进制数位个数不是4的倍数,则在前面补0(原则是数值不变)
举例:
二进制数101101转换为十六进制。
- 长度为6位,不是4的倍数,前面补两个0,为:0010 1101
- 每4位二进制转换为1位十六进制数:2D
3.进制计算
3.1 机器数
机器数
:各种数值在计算机中表示的形式。
- 特点:使用
二进制
计数制,数的符号用0和1表示,小数点则隐含,不占位置。 - 根据有无符号位,分为:
无符号数
:表示正数,没有符号位。带符号数
:最高位为符号位,正数符号位为0,负数符号位为1。
真值
:机器数对应的实际数值。
3.2 编码方式(原码、反码、补码、移码)
带符号数
有下列编码方式,当真值为 -45 时:
原码
:一个数的正常二进制表示,最高位表示符号,数值0的原码有两种形式:+0(0 0000000)和 -0(1 0000000)。-45对应原码为10101101
反码
:正数的反码即原码;负数的反码是在原码的基础上,除符号位外,其他各位按位取反。数值0的反码也有两种形式:+0(0 0000000)和 -0(1 0000000)。-45对应反码为11010010
补码
:正数的补码即原码;负数的补码是在原码的基础上,除符号位外,其他各位按位取反,然后末位+1,若有进位则产生进位。因此数值0的补码只有一种形式 +0 = -0 = 0 0000000。-45对应补码为11010011
移码
:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位(符号位)取反得到移码。-45对应移码为01010011
3.3 表示范围
- 机器字长为 n 时,各种码制表示的带符号数的取值范围(差别在于 0 的表示 )。
定点整数
- 1.指数-实际字长:n=1(符号位)+(n-1)(数值位)
- 因此只有n-1个位数可用于表示数值
- 2.底数-进制:2
- 3.可表示的数值数量:2^(n-1)
- 4.可表示的取值范围:2^(n-1)-1
- 5.原码和反码被-0占用,因此负数跟正数的取值范围一样
- 6.补码和移码没有被-0占用,因此负数可以比正数多表示一个。
定点小数
- 定点整数取值范围整体/2^(n-1)
3.4 定点表示法
定点表示法
:根据小数点位置,分为纯小数和纯整数两种,其中小数点不占存储位,而是按照以下约定:
纯小数
:约定小数点的位置在机器数的最高数值位之前。纯整数
:约定小数点的位置在机器数的最低数值位之后。
4.浮点数
浮点数
:表示方法为N=F*2^E
,其中E称为阶码
,F称为尾数
;类似于十进制的科学计数法,如85.125=0.85125*102,二进制如101.011=0.101011*23
4.1 浮点数的表示
在浮点数的表示中,阶码为带符号的纯整数,尾数为带符号的纯小数,要注意符号占最高位(正数0负数1),其表示格式如下:
注意: 一个浮点数的表示方法不是唯一的,浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定。
4.2 浮点数的运算
对阶
:使用两个数的阶码相同,小阶向大阶看齐,较小阶码增加几位,尾数就后移几位。
补充:小阶向大阶看齐,尾数右移丢弃末位,精度变化较小。
位数计算
:相加,若是减运算,则加负数。
结果规格化
:即尾数表示规格化,带符号尾数转换为1.0XXXX或0.1XXXX。
4.3 尾数的表示规格化
尾数的表示规格化
:带符号尾数的补码必须为1.0XXXX(负数)或者0.1XXXX(正数),其中X可为0或1。
整理完毕,完结撒花~ 🌻