《逻辑与计算机设计基础(原书第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。

相关文章
|
机器学习/深度学习 人工智能 安全
大模型的安全对齐技术
大模型的安全对齐技术
1045 1
大模型的安全对齐技术
|
运维 网络协议 安全
长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践
本文将介绍百度基于golang实现的统一长连接服务,从统一长连接功能实现和性能优化等角度,描述了其在设计、开发和维护过程中面临的问题和挑战,并重点介绍了解决相关问题和挑战的方案和实践经验。
468 1
|
SQL Java 关系型数据库
调优为王!阿里巴巴彩版java性能调优实战,终于到手了!文末福利
开始之前,我先来讲一下我对性能调优的看法。在我看来Java的性能调优并不是像学习编程语言一样可以通过学习掌握,它是没有办法用直线的思维学会并掌握使用的,并且它对于程序员来说,对技术深度和广度有这十分高的门槛。
|
7月前
|
监控 安全 API
电商系统数据同步——电商API接口篇
电商系统中,数据同步是保障业务高效运转与优化用户体验的核心环节,而API接口作为关键技术起着至关重要的作用。本文从API基础解析、应用场景(如商品信息、订单、库存、支付与物流同步)、技术实现路径、挑战与应对策略及最佳实践等方面深入剖析电商API接口在数据同步中的作用,并通过亚马逊、阿里巴巴等实战案例展示其应用价值。
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
481 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
JavaScript BI 数据处理
computed 与 method 结合使用的示例
【10月更文挑战第15天】Computed 与 Method 的结合使用为 Vue 应用的开发提供了更多的可能性和灵活性。通过合理运用,可以更好地处理数据计算和逻辑操作,提高应用的性能和可维护性。在实际开发中,要根据具体需求和场景,巧妙地将两者结合起来,以达到最佳效果。
206 3
|
缓存 Kubernetes Linux
CentOS 7上的GitLab Runner,让你的项目加速奔跑
CentOS 7上的GitLab Runner,让你的项目加速奔跑
733 1
|
消息中间件 Linux 芯片
soc的核间通信机制-->mailbox
soc的核间通信机制-->mailbox
1163 0
|
canal SQL 关系型数据库
Canal入门
Canal入门
775 1