常见的进制
{\quad} 二进制:0,1
{\quad} 八进制:0,1,2,3,4,5,6,7
{\quad} 十进制:0,1,2,3,4,5,6,7,8,9
{\quad} 十六进制:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
任意进制→十进制
{\quad} 二进制:10010.1 {\qquad} {\quad} 1* 2 4 2^4 24 +0* 2 3 2^3 23+0* 2 2 2^2 22+1* 2 1 2^1 21+0* 2 0 2^0 20+1* 2 − 1 2^{-1} 2−1
{\quad} 八进制:251.5 {\qquad} {\qquad} 2* 8 2 8^2 82 +5* 8 1 8^1 81+1* 8 0 8^0 80+5* 8 − 1 8^{-1} 8−1
{\quad} 十六进制:AE86.1 {\qquad} {\quad} 10* 1 6 3 16^3 163 +14* 1 6 2 16^2 162+8* 1 6 1 16^1 161+6* 1 6 0 16^0 160+1* 1 6 − 1 16^{-1} 16−1
常用2的次方
2 − 3 2^{-3} 2−3 | 2 − 2 2^{-2} 2−2 | 2 − 1 2^{-1} 2−1 | 2 0 2^0 20 | 2 1 2^1 21 | 2 2 2^2 22 | 2 3 2^3 23 | 2 4 2^4 24 | 2 5 2^5 25 | 2 6 2^6 26 | 2 7 2^7 27 | 2 8 2^8 28 | 2 9 2^9 29 | 2 10 2^{10} 210 | 2 11 2^{11} 211 | 2 12 2^{12} 212 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0.125 | 0.25 | 0.5 | 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 |
二进制→八进制
3位一组,每组转换为八进制符号
001 1 \frac{001}{1} 1001 111 7 \frac{111}{7} 7111 000 0 \frac{000}{0} 0000 010 2 \frac{010}{2} 2010. 011 3 \frac{011}{3} 3011 010 2 \frac{010}{2} 2010
八进制→二进制
每位八进制对应3位二进制
( 251.5 ) 8 (251.5)_8 (251.5)8 → ( 010 101 001.101 ) 2 (010\ 101\ 001.101)_2 (010 101 001.101)2
二进制→十六进制
4位一组,每组转换为十六进制符号
0011 3 \frac{0011}{3} 30011 1100 C \frac{1100}{C} C1100 0010 2 \frac{0010}{2} 20010 0110 6 \frac{0110}{6} 60110. 1000 8 \frac{1000}{8} 81000
十六进制→二进制
每位十六进制对应4位二进制
( A E 86.1 ) 16 (AE86.1)_{16} (AE86.1)16 → ( 1010 1110 1000 0110.0001 ) 2 (1010\ 1110\ 1000\ 0110.0001)_2 (1010 1110 1000 0110.0001)2
十进制→任意进制
十进制转R进制使用短除法
例:将94转换为二进制
被除数 | 除数 | 余数 |
---|---|---|
2 | 94 | 0 |
2 | 47 | 1 |
2 | 23 | 1 |
2 | 11 | 1 |
2 | 5 | 1 |
2 | 2 | 0 |
2 | 1 | 1 |
转换完成的二进制为(由下往上):1011110
数据的表示——真值和机器数
15→1111 \qquad +15→ 0 1111 0\ 1111 0 1111
8→1000 \qquad -8→ 1 1000 1\ 1000 1 1000
真值:符合人类习惯的数字
机器数:数字实际存到机器的形式,正负号需要数字化,其中0表示正,1表示负
定点数VS浮点数
定点数:小数点的位置固定 \qquad 例:996.07——常规计数
浮点数:小数点的位置不固定 \qquad 例:9.9607* 1 0 2 10^2 102——科学计数
定点数的表示 { 无符号数 有符号数 { 原码 反码 补码 移码 定点数的表示\begin{cases} 无符号数\\ \\ 有符号数\begin{cases} 原码\\ 反码\\ 补码\\ 移码 \end{cases} \end{cases} 定点数的表示⎩ ⎨ ⎧无符号数有符号数⎩ ⎨ ⎧原码反码补码移码
无符号数:整个机器字长全部二进制位均为数值位,相当于绝对值,通常只有无符号整数,没有无符 \qquad \qquad 号小数。
原码
原码:用数值部分表示真值的绝对值,符号位“0/1”,对应“正/负”
常写为: [ x ] 原 [x]_原 [x]原= 1 0010011 1\ 0010011 1 0010011
若机器字长n+1位,原码整数的表示范围:-( 2 n 2^n 2n-1)=<x=<( 2 n 2^n 2n-1)
真值0有+0和-0两种形式
[ + 0 ] 原 [+0]_原 [+0]原= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [−0]原= 1 000 0000 1\ 000\ 0000 1 000 0000
反码
反码:若符号位为0,则反码与原码相同
\qquad 若符号位为1, 则数值位全部取反
x=+19D \qquad [ x ] 原 [x]_原 [x]原= 0 001 0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]反= 0 001 0011 0\ 001\ 0011 0 001 0011
x=-19D \qquad [ x ] 原 \ [x]_原 [x]原= 1 001 0011 1\ 001\ 0011 1 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]反= 1 110 1100 1\ 110\ 1100 1 110 1100
若机器字长n+1位,反码整数的表示范围:-( 2 n 2^n 2n-1)=<x=<( 2 n 2^n 2n-1)
真值0有+0和-0两种形式
[ + 0 ] 原 [+0]_原 [+0]原= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [−0]原= 1 000 0000 1\ 000\ 0000 1 000 0000
[ + 0 ] 反 [+0]_反 [+0]反= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 反 [-0]_反 [−0]反= 1 111 1111 1\ 111\ 1111 1 111 1111
补码
补码:正数的补码=原码
\qquad 负数的补码=反码末尾+1(要考虑进位)
x=+19D \qquad [ x ] 原 [x]_原 [x]原= 0 001 0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]反= 0 001 0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 补 [x]_补 [x]补= 0 001 0011 0\ 001\ 0011 0 001 0011
x=-19D \qquad [ x ] 原 \ [x]_原 [x]原= 1 001 0011 1\ 001\ 0011 1 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]反= 1 110 1100 1\ 110\ 1100 1 110 1100
\qquad \qquad \quad [ x ] 补 [x]_补 [x]补= 1 110 1101 1\ 110\ 1101 1 110 1101
[ + 0 ] 原 [+0]_原 [+0]原= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [−0]原= 1 000 0000 1\ 000\ 0000 1 000 0000
[ + 0 ] 反 [+0]_反 [+0]反= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 反 [-0]_反 [−0]反= 1 111 1111 1\ 111\ 1111 1 111 1111
[ + 0 ] 补 [+0]_补 [+0]补= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 补 [-0]_补 [−0]补= 0 000 0000 0\ 000\ 0000 0 000 0000
[ + 0 ] 补 [+0]_补 [+0]补= [ − 0 ] 补 [-0]_补 [−0]补= 0 000 0000 0\ 000\ 0000 0 000 0000
注:补码的真值0只有一种形式!!!
定点整数补码 [ x ] 补 [x]_补 [x]补= 1 000 0000 1\ 000\ 0000 1 000 0000,表示x=- 2 7 2^7 27
若机器字长n+1位,补码整数的表示范围:
- 2 n 2^n 2n=<x=<( 2 n 2^n 2n-1),比原码多表示一个- 2 n 2^n 2n
移码
移码:补码的基础上将符号位取反,移码只能用于表示整数
x=+19D \qquad [ x ] 原 [x]_原 [x]原= 0 001 0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]反= 0 001 0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 补 [x]_补 [x]补= 0 001 0011 0\ 001\ 0011 0 001 0011
\qquad \qquad \quad [ x ] 移 [x]_移 [x]移= 1 001 0011 1\ 001\ 0011 1 001 0011
x=-19D \qquad [ x ] 原 \ [x]_原 [x]原= 1 001 0011 1\ 001\ 0011 1 001 0011
\qquad \qquad \quad [ x ] 反 [x]_反 [x]反= 1 110 1100 1\ 110\ 1100 1 110 1100
\qquad \qquad \quad [ x ] 补 [x]_补 [x]补= 1 110 1101 1\ 110\ 1101 1 110 1101
\qquad \qquad \quad [ x ] 移 [x]_移 [x]移= 0 110 1101 0\ 110\ 1101 0 110 1101
[ + 0 ] 原 [+0]_原 [+0]原= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 原 [-0]_原 [−0]原= 1 000 0000 1\ 000\ 0000 1 000 0000
[ + 0 ] 反 [+0]_反 [+0]反= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 反 [-0]_反 [−0]反= 1 111 1111 1\ 111\ 1111 1 111 1111
[ + 0 ] 补 [+0]_补 [+0]补= 0 000 0000 0\ 000\ 0000 0 000 0000 \qquad [ − 0 ] 补 [-0]_补 [−0]补= 0 000 0000 0\ 000\ 0000 0 000 0000
[ + 0 ] 移 [+0]_移 [+0]移= 1 000 0000 1\ 000\ 0000 1 000 0000 \qquad [ − 0 ] 移 [-0]_移 [−0]移= 1 000 0000 1\ 000\ 0000 1 000 0000
[ + 0 ] 移 [+0]_移 [+0]移= [ − 0 ] 移 [-0]_移 [−0]移= 1 000 0000 1\ 000\ 0000 1 000 0000
注:移码的真值0只有一种形式!!!
若机器字长n+1位,移码整数的表示范围:
- 2 n 2^n 2n=<x=<( 2 n 2^n 2n-1),与补码相同
浮点数
浮点数:浮点数是小数点位置不固定的数,它能表示更大范围的数。
表示格式: 阶符 \qquad 阶码 \qquad 数符 \qquad 尾数
阶码常为带符号的纯整数,尾数为带符号的纯小数
浮点数通常表示成:N=M* R E R^E RE
其中,M为尾数,R为基数,E为阶码
阶码:决定浮点数的数值范围
尾数:决定浮点数的数值精度
校验码:海明码
海明码的构成方法:在数据位之间插入k个校验码,通过扩大码距来实现检错和纠错。
设数据位n位,检验为k位,则n和k必须满足以下关系:
2 k 2^k 2k-1>=n+k