1.2.1 数制及转换
1.数制
数制是数值的表示及计算方法,人们日常生活中习惯采用的是十进制,但是在计算机中,各种信息都是以二进制形式表示的,最直接的根本原因是二进制可以很容易地通过物理器件来表示,比如用1表示高电平,用0表示低电平;标记表示1,不标记表示0等。同时,二进制数据在计算机领域计算方法简单,可靠性也非常高。
除了二进制以外,计算机中还有十六进制和八进制。十六进制是计算机领域中二进制的重要补充,可以认为是二进制的缩写,两者可以非常简单直接进行转换。十六进制数据广泛应用于编码的表示与分析,在硬件电路设计中也有非常重要的作用。八进制的作用类似,但目前在实际工作中基本不再出现。本书讨论的数制主要是十进制、二进制以及十六进制。
在计算机中,通常用数字后面跟一个英文字母表示该数进位计数制。十进制数一般用D(Decimal)或d、二进制用B(Binary)或b、八进制用O(Octal)或o、十六进制数用H(Hexadecimal)或h。
2.转换
人们习惯采用十进制数,计算机采用的是二进制数,数据编码与解析常用十六进制数,因此,必然产生各种进位计数制之间的相互转换问题。实际应用中一般需求有以下三种转换。
(1)任意进制数(用R表示)转换为十进制数
位权相加法:把R进制数每位上的权数与该位上的数码相乘,然后求和即得要转换的十进制数。即:
【例1-1】将二进制数11011转化成十进制数。
(11011)2=1×24+1×23+0×22+1×21+1×20=16+8+0+2+1=(27)10
(2)十进制数转换为R进制数
在将十进制转换成R进制时,需对整数部分和小数部分进行分别处理。
整数部分连续除以R,其余数位的序列就是对应的进位计数制的整数部分。
小数部分连续乘以R,取其整数构成的序列就是对应的进位计数的小数部分。
【例1-2】将十进制数45.125转换成二进制数。
转换结果:(45.125)10=(101101.001)2
(3)二进制数与十六进制数之间的转换
基本转换思路是四位二进制数位相当于一位十六进制数位,以小数点为分界,数值位数不足4的倍数则补零。例1-3和例1-4通过箭头的对应关系能直观反应这个转换思路。
【例1-3】将二进制数1000.1010110转换成十六进制数。
转换结果:(1000.1010110)2=(8.AC)16
【例1-4】将十六进制数9A38转换成二进制数。
转换结果:(9A38)16=(1001101000111000)2
3.常用对照表
计算机中需要数制转换的场合一般涉及数值较小,通常并不需要将一些复杂的数据在各种数制之间进行转换。为了方便使用,表1-1列出了几种数制的具体表示方式。
表1-1 数制常用对照表