《逻辑与计算机设计基础(原书第5版)》——1.5 十进制编码

简介: 本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第1章,第1.5节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.5 十进制编码

二进制数是最适合计算机系统的,但人们却习惯使用十进制数。一种解决方法是将十进制数转换成二进制形式,所有的计算都采用二进制形式,然后将结果再转换回十进制数。因为计算机只接受二进制数,这种方法需要我们将十进制数以某种0、1编码的二进制形式在计算机中存储。在这种编码上甚至可以直接进行十进制的算术操作。
一种n位的二进制编码(binary code)是一组有2n个n位二进制位(0或1)的组合,每种组合是编码集合中的一个元素。一个有4个元素的集合可以用2位二进制数来编码构成,其中每一个元素就是后面二进制位组合中的某一个:00、01、10、11。8个元素的集合可以用3位二进制编码构成,16个元素的集合则需要4位二进制编码。一种n位的编码有0~2n―1个二进制位组合形式,每个元素只能用一个二进制组合来表示,不能出现两个元素有相同值的情况,否则,就会导致赋值的不确定性。
如果编码集合的元素个数不是2的幂数,就有可能出现一些二进制位组合未赋值的情况,十进制的10个数字就是如此。10个元素须用4个二进制位的组合来区分表示,这样16个可能的组合中就有6个多余的组合未被赋值。有很多种编码方法来使用4位二进制位表示10个元素。表1-4所列的就是一种用二进制形式表示十进制数的最直接的方法,称为用二进制编码的十进制数(binary-coded decimal),通常简称BCD码。还有其他十进制数字的编码形式,但使用不普遍。
表1-4给出十进制中每个数字的二进制编码。一个n位的十进制数需要4n位的BCD码来表示。这样,十进制数396的BCD形式是12位的:
0011 1001 0110
其中,每4位一组的编码表示一个十进制的数字。BCD码表示的十进制数中只有0~9是和相应的二进制数是一模一样的。大于等于10的BCD码表示的十进制数就与相对应的二进制数完全不一样了,虽然它们都是采用0与1的组合形式。甚至,二进制数中的1010到1111在BCD码中没有用到,没有任何意义。
image

如下是十进制数185和它的BCD编码以及二进制形式:
(185)10=(0001 1000 0101)BCD=(10111001)2
其中,BCD码需要12位,而二进制形式却只需要8位。显然,表示同一个数,BCD码比二进制需要更多的位。但是,用BCD码来表示十进制数仍然很重要,因为人们常用的计算机的输入输出数据需要用十进制形式。BCD码是十进制数,不是二进制数,即使它们都是采用二进制位的组合来表示。十进制数与BCD码的区别仅仅在于,十进制数的数字符号是0、1、2、…、9,而BCD码则用二进制编码:0000、0001、0010、…、1001。

相关文章
30.【十进制和二进制的相互转化(超详解)】
30.【十进制和二进制的相互转化(超详解)】
107 0
|
7天前
|
存储 编译器
二进制相关概念、运算与应用
本文详细介绍了二进制、原码、反码和补码的概念及其应用,包括8位二进制的表示范围和常见位运算符的使用方法。通过具体示例,解释了位运算在数值翻倍、字符大小写转换和IP地址生成中的巧妙运用。此外,还提供了进制间转换的方法和Java-API中的支持。本文旨在帮助读者深入理解位运算的基础和实际应用。
21 1
二进制相关概念、运算与应用
|
4月前
|
存储
计算机中二进制与数字逻辑
【7月更文挑战第26天】
69 2
|
6月前
|
存储 安全 程序员
|
6月前
|
C++
十进制二进制相互转化C++
十进制二进制相互转化C++
25 0
|
开发者
算术编码 | 学习笔记
快速学习算术编码,介绍了算术编码系统机制, 以及在实际应用过程中如何使用。
算术编码 | 学习笔记
|
机器学习/深度学习 前端开发 JavaScript
计算机各种进制之间的转换,外行人也能看的懂
计算机各种进制之间的转换,外行人也能看的懂
计算机各种进制之间的转换,外行人也能看的懂
|
存储 容器
《逻辑与计算机设计基础(原书第5版)》——3.11 二进制加减法器
本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.11节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2139 0