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…)

 

 

 

 

 

 

 

 
posted on 2012-07-03 22:58  GreenLight  阅读(321)  评论(0)    收藏  举报