1. 计算机科学基础
1.1 数值及其转换
@ 2进制、10进制和16进制等常用数制及其相互的转换。
2进制与10进制之间的相互转换。(II)
2进制与16进制的相互转换。(I)
[my review]
计算机的数据单位
1. bit (位)是计算机的最小的数据单位。 状态为0/1,为二进制。
2. Byte (字节) 由8个bit构成,变换范围为0000 0000 ~ 1111 1111,共256种状态。转换成10进制表示为0~255。
3. 1 Kilobyte (KB) = 1024byte, 1 Megabyte(MB) = 1024KB, 1 Gigabyte(GB) = 1024 MB, 1 Terabyte (TB) = 1024 GB.
10进制,2进制和16进制转换表格
|
10进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
2进制 |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
|
16进制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
2进制到10进制的变换
可以利用2进制的2i来进行求解。例如, 把2进制下面的100110.101 转换成10进制的过程为, i 在各个位上的分别为5 4 3 2 1 0 –1 –2 -3
后的结果为 1x25+1x24 + … 1 x 2-3=38.625
10进制到2进制的变换
首先把10进制的整数部分和小数部分分别考虑。例如,(89.625)10=89 + 0.625
整数部分,除以2,然后取余数,按照逆序输出,即,先出来的是最低位。
89 / 2 … … 1
44 / 2 … … 0
22 / 2 … … 0
11 / 2 … … 1
5 / 2 … … 1
2 / 2 … … 0
1 / 2 … … 1
整数部分为 1011001
小数部分,乘以2 取整, 按照顺序,先出的为高位。
0.625 x 2 = 1.25 … … 1
0.250 x 2 = 0.50 … … 0
0.500 x 2 = 1.00 … … 1
小数部分为 101
最后的结果为 1011001.101
2进制到16进制的变换
可以采用4个一组进行分类,即以2进制的小数点为分界点。向左或向右每四位为一组,每组内的数字转换为10进制,然后找到对应的16进制即可。对于向左或向右不满4位的,通过0进行补位。
例如, 2进制11101001.1011转换为16进制。分类后为(1110)(1001).(1011)变成10进制为(14)(10).(11) 转为E9.B。
16进制到2进制的变换
16进制的1位数对应2进制的4位数。可以采用2-16进制的表格直接进行替换。或是采用类型10进制到2进制的类似的方法。或是直接利用8421直接进行凑取。取1为有效,0为无效位。例如,16进制6E.2转换为6->(0110), E->(1110), 2->(0010),最后的结果为1101110. 001。
8进制和2进制的转换
采用类似16-2之间变换的方法,唯一不同的是3个2进制位为一组。
1.2 数据的表示
@ 带符号定点数据(纯整数和纯小数)的原码、反码、补码表示(II)
@ 浮点数(实数)的表示(I)
@ 精度和溢出的概念(II)
[my review]
各种数据在计算机中的表示的形式为机器数。为了方便计算,带符号的机器数采用原码、反码和补码等编码方法。这些编码方法为码制。
原码
数值X的原码定义为[X]原。表示方法为:若采用n位表示数据。最高位为符号位,0表示正数,1表示负数。剩下的n-1位为数值的绝对值。
1.表示整数时(小数点在最低位右边)。例如,位数n = 8。 当符号位为0时为正整数, 变化范围0000 0000 ~ 0111 1111,即+0~(27)-1。 当符号位为1的时候,为负整数,变化范围为 1000 0000 ~ 1111 1111, 即-0~-(27-1)。 所以0在这里有两种表示,分别为 0000 0000 或 1000 0000。利用n位数表示的整数的表示范围为–(2n-1-1) ~ (2n-1 –1),共表示(2n-1)种状态。注意0的两种表示。
2.表示小数的时候,最高位为符号位,剩下的n-1为绝对值。小数点定义在#位置,例如 0#100 0000, 表示为+2-1= +0.5。若1#100 0000,即表示为-2-1=-0.5。当符号位为0时,变化范围0#000 0000 ~0#111 1111。0#111 1111表示2-1+2-2+..2-7=0.5*(1-2-7)/(1-0.5) = 1-2-7。0也存在两种表示。对于n位表示的小数的表示范围为–(1-2-(n-1)) ~ (1-2-(n-1)),共表示(2n-1)种状态。
反码
数值X的反码定义为[X]反。
反码的最高位为符号位,即1表示负号,0表示正号。正数的原码和反码一样。负数的反码,保留符号位,其它位求反。
例如,+0的原码为 0000 0000 , 反码为 0000 0000。对于-0的原码 1000 0000,为1111 1111。[+127]原=[+127]反=0111 1111。 [-127]反=1000 0000。对于小数[+0.5]原=[+0.5]反=0#100 0000。[-0.5]反=1#011 1111。
补码
数值X的反码定义为[X]补。正数的补码与原码一样。负数的补码等于反码末尾加1。
(to be continue…)
浙公网安备 33010602011771号