数值型数据的表示和转换
1.数制
应用最广泛的是十进制。
(N)10 = Dm10m+Dm-110m-1+...+D0100+D-110-1+...+D-k*10-k =$\sum_{i=m}^n Di10^i$,(n=-k)
(N)10的下标10表示十进制,称为基数或“底”;这个数共有m+k+1位,且m和k为正整数;Di是0~9中任意一个,与其相乘的固定单位值10i,称之为权。
计算机中十进制的存储和运算都不太方便,因此采用二进制。
(N)2 = Dm2m+Dm-12m-1+...+D020+D-12-1+...+D-k*12-k =$\sum_{i=m}^n Di2^i$ ,(n=-k)
整数部分m+1位,小数k位,基数/底为2。
对机器来说二进制很方便,但对万物之灵的人来说很不方便,因此常采用八进制或十六进制。
$\sum_{i=m}^n Di8^i $ ,(n=-k) Di是0~7的任意一个数。
$\sum_{i=m}^n Di16^i $ ,(n=-k) Di是0~15的任意一个数。大于9 的数用ABCDEF表示。
二、八、十、十六进制数的对应关系。
二进制数 | 八进制数 | 十进制数 | 十六进制数 |
---|---|---|---|
0000 | 00 | 0 | 0 |
0001 | 01 | 1 | 1 |
0010 | 02 | 2 | 2 |
0011 | 03 | 3 | 3 |
0100 | 04 | 4 | 4 |
0101 | 05 | 5 | 5 |
0110 | 06 | 6 | 6 |
0111 | 07 | 7 | 7 |
1000 | 10 | 8 | 8 |
1001 | 11 | 9 | 9 |
1010 | 12 | 10 | A |
1011 | 13 | 11 | B |
1100 | 14 | 12 | C |
1101 | 15 | 13 | D |
1110 | 16 | 14 | E |
1111 | 17 | 15 | F |
2.不同进制数的转换
2.1 二转八、十六
三个二进制数可转换成一个八进制数,四个二进制数可转换为一个十六进制数。
对于一个有整数和小数部分的数,以小数点为界分别处理,不足位补0,整数左补0,小数右补0.
(1 101.010 1)2=(1 5 . 2 4)8
(1 1101.0101)2=(1 D.5)16
八、十六——>二就是上述过程的逆过程,八<——>十六,可以二进制为中间量转换。
2.2二转十
(N)2 = Dm2m+Dm-12m-1+...+D020+D-12-1+...+D-k*12-k =$\sum_{i=m}^n Di2^i$ ,(n=-k)
用此公式。
十——>二:
整数部分:除2取余。
小数部分:乘2取整。
整数部分和小数部分分别转换后再拼接,如(105.3125)10=(1101001.0101)2。
3.数据符号的表示
0表+,即正号,1表-,即负号。
3.1十进制编码与运算
采用4位二进制码对每个十进制编码。
(1)有权码
8421BCD码。0000~1001表示1-9。
修正BCD码算术运算:若相加小于等于9,不需修正;若大于9,加6,并向高位进位。
(2)无权码
每一位二进制码无确定的权。
余3码
在8421基础上,加0011。
格雷码/循环码。
两相邻编码只有一个二进制位不同,其余3个相同。
3.2数字串在计算机内的表示和存储
字符形式
一个字节放一个数字及正负号的ASCII码。
压缩BCD码。
一个字节放俩十进制数。