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

相关文章
|
机器学习/深度学习 人工智能 安全
大模型的安全对齐技术
大模型的安全对齐技术
782 1
大模型的安全对齐技术
|
2月前
|
监控 安全 API
电商系统数据同步——电商API接口篇
电商系统中,数据同步是保障业务高效运转与优化用户体验的核心环节,而API接口作为关键技术起着至关重要的作用。本文从API基础解析、应用场景(如商品信息、订单、库存、支付与物流同步)、技术实现路径、挑战与应对策略及最佳实践等方面深入剖析电商API接口在数据同步中的作用,并通过亚马逊、阿里巴巴等实战案例展示其应用价值。
|
10月前
|
存储 缓存 JavaScript
三个小时vue3.x从零到实战(前)(vue3.x基础)
该文章系列提供了Vue3.x从基础到实战的教程,涵盖安装、基本语法、组件化应用及项目构建等多个方面,适合从零开始学习Vue3.x的开发者。
700 0
|
存储 分布式计算 OLAP
Apache Paimon统一大数据湖存储底座
Apache Paimon,始于Flink Table Store,发展为独立的Apache顶级项目,专注流式数据湖存储。它提供统一存储底座,支持流、批、OLAP,优化了CDC入湖、流式链路构建和极速OLAP查询。Paimon社区快速增长,集成Flink、Spark等计算引擎,阿里巴巴在内部广泛应用,旨在打造统一湖存储,打通Serverless Flink、MaxCompute等,欢迎大家扫码参与体验阿里云上的 Flink+Paimon 的流批一体服务。
17455 8
Apache Paimon统一大数据湖存储底座
|
canal SQL 关系型数据库
Canal入门
Canal入门
574 1
|
Java API
Java操作elasticsearch
Java操作elasticsearch
73 0
|
弹性计算 关系型数据库 MySQL
|
运维 供应链 安全
从方法论到最佳实践,深度解析企业云原生 DevSecOps 体系构建
本文主要介绍了云原生安全的现状以及企业应用在云原生化转型中面临的主要安全挑战以及相对成熟的一部分安全体系方法论,深度解析企业云原生 DevSecOps 体系构建。
|
消息中间件 Linux 芯片
soc的核间通信机制-->mailbox
soc的核间通信机制-->mailbox
776 0
|
canal SQL 关系型数据库
大数据同步工具Canal 2
大数据同步工具Canal
585 0