购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 常用码制

数字逻辑工作在开关状态下,即二进制状态。为了满足不同的运算需求,人们又定制了使用八进制、十进制和十六进制表示数字的规则。其中十进制是日常生活中经常使用到的一种数值表示方法。

4.1.1 二进制码制

二进制是以2为基数的进位制,满足逢2进1的运算法则,如表4.1所示。在计算机系统中,采用二进制计数规则。这是因为采用二进制计数,只使用“0”和“1”两个数字符号,这样非常简单方便,并且很容易通过半导体元器件实现逻辑“0”和逻辑“1”两个状态。通过将“0”和“1”进行组合,就可以表示任意一个二进制数。

在C/C++语言中,二进制数以0b开头,如0b1011和0b010111;在汇编语言中,二进制数以B/b结尾,如1011B/1011b和010111B/01011b。

4.1.2 十进制码制

十进制是以10为基数的进位制,满足逢10进1的运算法则,如表4.1所示。在十进制数中,只出现0~9这10个数字。通过将这些数字进行组合,就可以表示任意一个十进制数。

在计算机系统中,对十进制数的表示没有特殊的要求。

4.1.3 八进制码制

八进制是以8为基数的进位制,满足逢8进1的运算法则,如表4.1所示。在八进制数中,只使用0~7这8个数字。通过将这些数字进行组合,就可以表示任何一个八进制数。

在C/C++语言中,八进制数以0开头,如0123和0675;在汇编语言中,八进制数以O/o结尾,如123O/123o和675O/675o。

4.1.4 十六进制码制

十六进制是以16为基数的进位制,满足逢16进1的运算法则,如表4.1所示。在十六进制数中,只使用数字0~9和字母A/a、B/b、C/c、D/d、E/e、F/f表示。

注:A/a、B/b、C/c、D/d、E/e、F/f对应于十进制数的10~15。

在C/C++语言中,十六进制数以0x开头,如0x1234,0xE1DD;在汇编语言中,十六进制数以H结尾,如1234H和E1DDH。

表4.1 不同进制数之间的对应关系

img

注:这种对应关系,只限制在非负的整数范围内。对于负数整数的描述,将在后面进行详细说明。

从表4.1中可以得出如下结论。

(1)知道为什么在十六进制数中大于9小于16的数使用字符A/a、B/b、C/c、D/d、E/e、F/f表示了。这是因为如果不用A/a表示10,而用“10”表示,则会出现理解上的错误,十六进制中的“10”对应于十进制数16,而不是对应于十进制数的10。

(2)观察八进制数,八进制的0~7,分别对应二进制低3位的000~111;八进制的10~17,也分别对应二进制数低3位的000~111。也就是说,连续的八进制数,其循环周期为8。因此,如果将二进制数从最低位开始,每3个数字为一组进行划分,就可以将二进制数转换成八进制数。

例如,对于一个二进制数“10011000010”,将其从最低位开始,每三个数字划分为一组,得到划分后的二进制数“10,011,000,010”,这样可以直接得到所对应的八进制数“2302”。

(3)观察十六进制数,十六进制的0~F,分别对应二进制低4位的0000~1111;十六进制的10~1F,也分别对应二进制数中低4位的0000~1111。也就是说,连续的十六进制数,其循环周期为16。因此,如果将二进制数从最低位开始,每4个数字为一组进行划分,可以将二进制数转换成十六进制数。

例如,对于一个二进制数“10011000010”,将其从最低位开始,每4个数字划分为一组,得到划分后的二进制数“100,1100,0010”,可以直接得到所对应的十六进制数“4C2”。 sFWzIoqw+IZnpKgY4vd3iTL1T80fufyIM/uqHtSavW2r8HNTMmYPUGSzNg58doM+

点击中间区域
呼出菜单
上一章
目录
下一章
×