数制的转换
内存所能存储的最大数,实际就是当所有位都为1时,所转化成的十进制数。
1 |
1 |
1 |
1 |
1 |
1 |
1 |
… … … |
即N个位都为1时,最大数为: -1= + +…+ +
例如:一个6位的二进制最大值为:
1 |
1 |
1 |
1 |
1 |
1 |
则其转换为十进制最大值为: -1= + + + + +
八进制与二进制、十六进制与二进制之间的关系
八进制 |
对应二进制 |
|
十六进制 |
对应二进制 |
十六进制 |
对应二进制 |
0 |
000 |
0 |
0000 |
8 |
1000 | |
1 |
001 |
1 |
0001 |
9 |
1001 | |
2 |
010 |
2 |
0010 |
A |
1010 | |
3 |
011 |
3 |
0011 |
B |
1011 | |
4 |
100 |
4 |
0100 |
C |
1100 | |
5 |
101 |
5 |
0101 |
D |
1101 | |
6 |
110 |
6 |
0110 |
E |
1110 | |
7 |
111 |
7 |
0111 |
F |
1111 |
一、 进位计数制
使用多位数码符号表示数值时,每一位数所使用的数码符号以及运算时从低位向高位借进位的规则,被称为进位计数制(或被称为计数制,简称数制,或进制)。
1. 进制的基本要素
(1) 数码
表示一个数位所使用的数字符号被称为数码。例如,十进制中使用的0,1,2,3,……,9都是数码。在R(R是一个正整数)进制使用的数码有R个。
注意:其一,数码必须是只占用一个数位的符号;
其二,所有的数码符号都是整数,且取值范围为闭区间[0,R-1]
(2) 基数
一种数制所使用的数码符号的个数(或者说一种数制的任何相邻两个数位的单位之比)称为该数制的基数。例如,在十进制中使用的数码有十个,相邻两个数位的单位之比也是十,因此十进制的基数就为10。R进制的基数为R(基数:Radix)。
(3) 位权
某个数位的单位称为该数位的位权(例如,在十进制中,个位、十位、百位的单位分别为个、十、百,因此个位、十位、百位的位权分别为 、 、 )。
在R进制中,各数位的位权可以归纳为如下两点:
①小数点前第p位整数的位权为 。
②小数点后第q位小数的位权为 。
(4) 借进位规则
有关进行加法(或乘法)运算,达到多少值需向高位进位“1”,进行减法(或除法)运算,何时需从高位借“1”,借来的“1”在本位当成几的运算规则,称借进位规则。同一种进制的所有数位都就遵从统一的借进位规则。这就是“逢基数进一,借一当基数”(例如,十进制的基数为十,因此它的借进规则是“逢十进一,借一当十”)。
(5) 按权展开式
按各位数码与相应位权之积将一个数展开所得到的式子称为该数的按权展开式。一个含有n位整数和m位小数的R进制数 ,其按权展开式可以表述如下:
其中: ——R进制数N;
——基数;
——第i位的位权,( );
——位权为 的数位上的数码符号,( {0,1,……,R-1});
n —— 的整数位数,( );
m —— 的小数位数,( );
2. 进制数的标识格式
存在三种标识进制数的格式,以R进制数N为例:
格式一: 格式二:NK 格式三:N
说明:格式三常用于十进制数标识格式。
格式二中的“K”是一个标识符。
二进制标识符为“B”;
八进制标识符为“O”(为避免与数值“0”混淆,常由“Q”代替);
十进制标识符为“D”(允许省略,省略后也就成为格式三);
十六进制标识符为“H”。
3. 常用数制简介
常用数制基本要素和表示方法表
基本要素 |
进 制 | ||
二进制(2#)B |
八进制(8#)Q |
十六进制(16#)H | |
基数 |
2 |
8 |
16 |
数码 |
0,1 |
0~7 |
0~9,A~F |
小数点前第p位整数的位权 |
|
|
|
小数点后第q位小数的位权 |
|
|
|
借进位规则 |
逢二进一, 借一当二 |
逢八进一, 借一当八 |
逢十六进一, 借一当十六 |
按权展开式 |
|
|
|
标识格式 |
(10110.1001)2 或10110.1001B |
(31407.64)8 或31407.64O 或31407.64Q |
(A50B.C7)16 或A50B.C7H |
例如:写出110101.101B、31407.64Q和A50B.C7H的按权展开式。
110101.101B =
31407.64Q =
A50B.C7H =
二、 不同数制间的转换
1. 任意其他进制(2#,8#,16#)转换成十进制
转换口诀:“利用按权展开式展开”。
例如:
10110.101B = =22.625
312.64Q = =202.8125
F7.CH = =247.75
2. 十进制转换成任意其他进制(2#,8#,16#)
(1) 整数部分的转换
转换口诀:“除基取余,倒序排列”。
例如:317 = 100111101B = 475Q = 13DH
(2) 小数部分的转换
转换口诀:“乘基取整,顺序排列”。
例如:0.4375D = 0.0111B = 0.34Q = 0.7H
注意:当所得余数(或整数)值超过9,必须将其转换成16进制的数码符号(例如,需将余数“13”转换为十六进制数码“D”)
取近似值的方法与十进制运算中的相似。“低于基数值一半时舍,等于或高于基数值一半时入”。
八进制与二进制、十六进制与二进制之间的关系
八进制 |
对应二进制 |
|
十六进制 |
对应二进制 |
十六进制 |
对应二进制 |
0 |
000 |
0 |
0000 |
8 |
1000 | |
1 |
001 |
1 |
0001 |
9 |
1001 | |
2 |
010 |
2 |
0010 |
A |
1010 | |
3 |
011 |
3 |
0011 |
B |
1011 | |
4 |
100 |
4 |
0100 |
C |
1100 | |
5 |
101 |
5 |
0101 |
D |
1101 | |
6 |
110 |
6 |
0110 |
E |
1110 | |
7 |
111 |
7 |
0111 |
F |
1111 |
3. 8#数转换成2#数
转换口诀:“逐位转换,一位拆三位”
例如: 3107.46Q = 11001000111.10011B
|
3 |
1 |
0 |
7 |
。 |
4 |
6 |
转换 |
011 |
001 |
000 |
111 |
。 |
100 |
110 |
删零 |
11001000111。10011B |
4. 16#数转换成2#数
转换口诀:“逐位转换,一位拆四位”
例如: 4A7.1CH = 10010100111.000111B
|
4 |
A |
7 |
。 |
1 |
C |
转换 |
0100 |
1010 |
0111 |
。 |
0001 |
1100 |
删零 |
10010100111。000111B |
5. 2#数转换成8#数
转换口诀:“三位合一位,分节转换”
例如: 11010101.1101B = 325.64Q
分节: |
11 |
010 |
101 |
。 |
110 |
1 |
补零: |
011 |
010 |
101 |
。 |
110 |
100 |
转换: |
3 |
2 |
5 |
。 |
6 |
4 |
连接: |
325.64Q |
6. 2#数转换成16#数
转换口诀:“四位合一位,分节转换”
例如: 1011010101.11101B = 2D5.E8H
分节: |
10 |
1101 |
0101 |
。 |
1110 |
1 |
补零: |
0010 |
1101 |
0101 |
。 |
1110 |
1000 |
2#~10# |
2 |
13 |
5 |
。 |
14 |
8 |
10#~16# |
2 |
D |
5 |
。 |
E |
8 |
连接: |
2D5。E8H |
7. 8#数与16#数的互换
转换口诀:“以二进制为桥”
例如: 1325.72Q = 1011010101.11101B = 2D5.E8H
D5.DH = 11010101.1101B = 325.64Q
各种进制间的转换方法表
源进制 |
目标进制 | |||||
十进制 |
二进制 |
八进制 |
十六进制 | |||
十进制 |
|
整数部分:除基取余,倒序排列; 小数部分:乘基取整,顺序排列 | ||||
二进制 |
用按权展开式展开 |
|
三位合一位 |
四位合一位 | ||
分节转换 | ||||||
八进制 |
逐位转换 |
一位拆三位 |
|
以二进制为桥 | ||
十六进制 |
一位拆四位 |
以二进制为桥 |
| |||
三、 二进制运算规则
由于二进制运算实行的借进位规则是“逢二进一,借一当二”,因此二进制的运算规则相当简单。全部四则运算规则可归纳为如下十四条。
加法:0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10
减法:0-0 = 0 1-0 = 1 1-1 = 0 10-1= 1
乘法:0×0 = 0 0×1 = 0 1×0 = 0 1×1 = 1
除法:0÷1 = 0 1÷1 = 1
四、 数值的表示
在计算机中通常把一个数的最高位定义为符号位,用0表示正,1表示负,称为数符。
规格化的浮点数形式,即尾数的绝对值>=01并且<1,唯一规定了小数点的位置。例如,十进制数-1234.5678以规格化形式表示为:-0.12345678×
同样,任意二进制规格化浮点数的表示形式为:
式中,d是尾数,前面的“ ”表示数符;p是阶码,前面的“ ”表示阶符。在计算机内的存储形式如下:
阶符 |
阶码 |
数符 |
尾数 |
带符号数的表示:负数的三种表示法:原码、反码、补码
(1) 原码
除正号用0表示,负号用1表示外,其余部分与原数相同
(2) 反码
正数的反码与原码相同,负数的反码除符号位外,按位取反
(3) 补码
正数的补码与原码相同,负数的补码除符号位外,按位取反,且末位加1(二进制加法)
例如:
-5的补码形式为: 11111011
4的补码形式为:+ 00000100
= 11111111
运算结果为11111111,是-1的补码形式。
又如:(-9)+(-5)运算如下:
-9的补码形式为: 11110111
-5的补码形式为: + 11111011
= 111110010
丢失高位1,运算结果机器数为11110010,是-14的补码形式。
由此可见,利用补码可方便地实现正负数的加法运算,规则简单,在数的有效存放范围内,等号位如同数值一样参加运算,也允许产生最高位的进位(被丢去)。