1. 位置记数法
十进制数386表示的数值是 3×102+8×101+6×100
一般地,n位十进制数可写成 dn-1……d1d0
它表示的数值是
dn-1×10n-1+……+di×10i+……+d1×101+d0×100
其中 di ∈ { 0,1,2,3,4,5,6,7,8,9 },0≤i≤n-1
相应地,n位二进制数可写成 dn-1……d1d0
它表示的数值是
dn-1×2n-1+……+di×2i+……+d1×21+d0×20
其中 di ∈ { 0,1 },0≤i≤n-1
于是,二进制数1101表示的数值是 1×23+1×22+0×21+1×20,也就是 8+4+0+1,显然,二进制数1101与十进制数13是等值的。
同理,可定义八进制数和十六进制数。
n位八进制数可写成 dn-1……d1d0
它表示的数值是
dn-1×8n-1+……+di×8i+……+d1×81+d0×80
其中 di ∈ { 0,1,2,3,4,5,6,7 },0≤i≤n-1
n位十六进制数可写成 dn-1……d1d0
它表示的数值是
dn-1×16n-1+……+di×16i+……+d1×161+d0×160
其中 di ∈ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F },0≤i≤n-1,这里的A, B, C, D, E, F分别代表10, 11, 12, 13, 14, 15。A, B, C, D, E, F也可采用小写形式。
二、八、十、十六进制记数系统的基数分别是2、8、10、16,也就是di所属集合中元素的个数。基数的整数次幂叫作(位)权,就是处于某位置的数字1所代表的数值大小,诸如21,82,105,160……
据上所述,十进制数181,二进制数10110101,十六进制数B5,八进制数265,这四个数是等值的。本质上,它们只是记号,承载人的头脑中关于数(值)的抽象概念。数是看不见摸不着的脑中映象,然而凭借这些记号,数学思维过程得以进行,数学得以发展。
上述都是无符号整数,也就是非负整数。与计算机有关的还有二进制小数,n位无符号二进制小数可写成 0.d1d2……dn
它表示的数值是
d1×2-1+d2×2-2+……+di×2-i+……+dn×2-n
其中 di ∈ { 0,1 },0≤i≤n-1
这样,二进制小数0.1101表示数值 1×2-1+1×2-2+0×2-3+1×2-4,简单计算可知,二进制小数0.1101与十进制小数0.8125是等值的。
2. 二进制数与十进制数的相互转换
二进制数与十进制数的相互转换是为输入/输出服务的。在计算机内部,二进制数通常表现为补码,十进制数通常表现为数字字符0~9的ASCII码序列,这里基于补码和ASCII码简单讨论思路。
给定带符号整数的补码,将其转换为数字字符0~9的ASCII字符序列:
①根据符号位判别正负,若是负数,则对其进行变补操作,得到无符号绝对值,若非负数,则不作改变。
②采用除基(二进制数1010)取余法,求得各位数字的值。
③将各数字的值加30H(数字0的ASCII码),得到各数字的ASCII码。
给定数字字符0~9的ASCII码序列,将其转换为带符号整数的补码:
①将各位数字的ASCII码减30H,得到各位数字的值。
②采用按权(二进制数1010)相加法
dn-1×10n-1+……+di×10i+……+d1×101+d0×100
=(((dn-1×1010+dn-2)×1010+dn-3)×1010+……+d1)×1010+d0
其中 di ∈ { 0,1,2,3,4,5,6,7,8,9 },0≤i≤n-1
得到无符号绝对值。
③若是负数,则对其进行变补操作,若非负数,则不作改变。