首页 理论教育计算机数据表示形式:C语言程序设计

计算机数据表示形式:C语言程序设计

【摘要】:数据表示是指计算机能够辨认并进行存储、传送和处理数据的表示方法。在计算机语言中,常用的数据表示形式有二进制、八进制、十进制、十六进制。

数据是指能够输入计算机并被计算机处理的数值、字母、符号的集合。数据表示是指计算机能够辨认并进行存储、传送和处理数据的表示方法。在计算机语言中,常用的数据表示形式有二进制、八进制、十进制十六进制。但计算机内部的指令只能用二进制表示。要想将其他进制数据转换成二进制数据,就需要用到编码转换。编码转换分为数值编码转换和非数值编码转换。

1.1.2.1 数值编码表示

1.十进制

十进制有0~9共10个数码,其计数特点以及进位原则是“逢十进一”。十进制的基数是10,位权为10K(K为整数,以小数点为起点,小数点左边的整数部分第一位K为0,第二位为1,以此类推;小数点右边的小数部分第一位为-1,第二位为-2,以此类推)。一个十进制数可以写成以10为基数按位权展开的形式。

例:把十进制数123.45按位权展开。

解:(123.45)10=1×102+2×101+3×100+4×10-1+5×10-2

2.二进制

二进制只有0和1两个数码,它的计数特点及进位原则是“逢二进一”。二进制的基数为2,位权为2K(K为整数)。一个二进制数可以写成以2为基数按位权展开的形式。

例:把二进制数1011.101按位权展开。

解:(1011.101)2=1×23+0×22+1×21+1×20+1×2-1+0×2-2+1×2-3

3.八进制

八进制中有0~7共8个数码,其计数特点及进位原则是“逢八进一”。八进制的基数为8,位权为8K(K为整数)。

例:把八进制数1234.67按位权展开。

解:(1234.67)8=1×83+2×82+3×81+4×80+6×8-1+7×8-2

4.十六进制

十六进制有0~9及A、B、C、D、E、F共16个数码,其中A~F分别对应十进制数的10~15。十六进制计数特点及进位原则是“逢十六进一”。十六进制的基数为16,位权为16K(K为整数)。

例:把十六进制数A1234按位权展开。

解:(A1234)16=A×164+1×163+2×162+3×161+4×160

1.1.2.2 数值编码的转换

1.十进制数转换为R进制数

十进制数转换为R进制数需要将整数部分和小数部分单独转换。

整数部分的转换方法:以短除法的形式,采用除R取余的逆序,获得R进制数。下面以十进数年制转换为二进制数为例。如图1.1所示,将(236)10转换为二进制,得到的二进制结果为(11101100)2。同样的道理,如果想将十进制数转换为八进制数,只需要把除以2改为除以8即可,其他进制以此类推。

图1.1 短除法

2.R进制数转换成十进制数

用按权展开法:把一个任意R进制数anan-1…a1a0.a-1a-2…a-m转换成十进制数:

an×Rn+an-1×Rn-1+…+a1×R1+a0×R0+a-1×R-1+a-2×R-2+…+a-m×R-m

其十进制数值为每一位数字与其位权之积的和。(www.chuimin.cn)

例如:

(101.11)2=1×22+0×21+1×20+1×2-1+1×2-2=(5.75)10

(2017.1)8=2×83+0×82+1×81+7×80+1×8-1=(1039.125)10

(3C03)16=3×163+12×162+0×161+3×160=(15363)10

3.二进制数和八进制数互换

二进制数转换成八进制数时,只需从小数点位置开始,向左或向右将每3位二进制划分为一组(不足3位时,整数部分向前补0,小数部分向后补0),然后写出每一组二进制数所对应的八进制数码即可。为什么是3位数为一组呢?因为23=8。

例:将二进制数(10110001.111)转换成八进制数:

010 110 001.111

2  6  1  7

即二进制数(10110001.111)转换成八进制数是(261.7)。反过来,将每位八进制数分别用3位二进制数表示,就可完成八进制数向二进制数的转换。

4.二进制数和十六进制数互换

二进制数转换成十六进制数时,只需从小数点位置开始,向左或向右将每4位二进制划分为一组(不足4位时,整数部分向前补0,小数部分向后补0),然后写出每一组二进制数所对应的十六进制数码即可。

例:将二进制数(11011100110.1101)转换成十六进制数:

0110 1110 0110.1101

6   E   6  D

即二进制数(11011100110.1101)转换成十六进制数是(6E6.D)。反过来,将每位十六进制数分别用4位二进制数表示,就可完成十六进制数向二进制数的转换。

5.八进制数、十六进制数和十进制数的转换

这三者转换时,可把二进制数作为媒介,先把被转换的数转换成二进制数,然后将二进制数转换成要求转换的制数形式。

1.1.2.3 非数值编码的转换

我们向计算机输入的字符、数字、字母等,都需要经过编码产生二进制数,才能被计算机识别。常见的非数值信息编码有:

1.美国标准信息交换码(ASCII)

ASCII码是用一个7位二进制数编码,并采用8位二进制数来表示,其最高位均为0。7位二进制数总共可编出27=128个码。其中,数字0~9、大写字母A~Z、小写字母a~z分别按其本来的顺序连续编码。它们的ASCII码按从小到大的顺序依次是:数字<大写字母<小写字母,如表1.1所示。

表1.1 美国标准信息交换码ASCII

2.汉字编码

汉字编码包括国标码、区位码和机内码。国标码的每个汉字用两个字节表示,每个字节的最高位为0;区位码用一个94行94列的二维代码表来表示汉字,两个字节分别用两位十进制编码,前字节的编码称为区码,后字节的编码称为位码;机内码将国标码所用两个字节最高位置为1。