常见的进制
{\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