没有合适的资源?快使用搜索试试~ 我知道了~
BCD码——也称8421码、二–十进制码,是一种以4位二进制数表示一位十进制数的编码。由于BCD码与十进制数具有一一对应关系,因此BCD码很适合于人机交互(显示和输入)场景。 二进制数转BCD码常使用加3移位法来处理,而不使用除法,是因为除法占用CPU寄存器的数量较多——CPU寄存器在计算机处理中,是存取速度最快速的临时存储器,数量是非常有限,对于8位单片机来说其数量也仅是个位数。 加3移位法的基本原理:……
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![ppt](https://img-home.csdnimg.cn/images/20210720083527.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/89509043/bg1.jpg)
第 1 页 共 2 页
二进制转BCD之“加3移位法”原理
BCD码——也称8421码、二–十进制码,是一种以4位二进制数表示一位十进制数的编码。由于BCD
码与十进制数具有一一对应关系,因此BCD码很适合于人机交互(显示和输入)场景。
二进制数转BCD码常使用加3移位法来处理,而不使用除法,是因为除法占用CPU寄存器的数量较多
——CPU寄存器在计算机处理中,是存取速度最快速的临时存储器,数量是非常有限,对于8位单片机来说
其数量也仅是个位数。
加3移位法的基本原理:4位二进制数的数容空间是16个整数值(0,1,…,15),而每位十进制的数容空间
为10个整数值(0,1,…,9),即BCD码中的4位二进制数有6个数值空间未使用。为了使这6个空间不被“非法”
占用,就需要+6来使非法占用的部分溢出——自动进位到高位。
因此,溢出修正的基本原理可表示为:
基本𝐁𝐂𝐃码 = 𝟒位二进制码 + 𝟔即𝟎𝟏𝟏𝟎
𝟐
即
基本𝐁𝐂𝐃码 = 2𝟑位二进制码 + 𝟑即𝟎𝟎𝟏𝟏
𝟐
也即是3位二进制码+3后需左移位一次,这就是加3移位法的基本原理。
加3移位法的普适原理:BCD码的本质是一组以每4位二进制码表示一位十进制数的数容空间排列,即
… ∎
∎
= ⋯ ∎
∎
= … ∎∎∎∎
∎∎∎∎
上式中,每一个表示BCD码的二进制段须满足该段的值小于10,对于整个二进制数而言,其高位也必
须满足这一条件。因此,将整个二进制数装入BCD码空间时,可以表示为从BCD码的低位开始以倍增(左
移)的形式靠近高位,直至整个二进制数按BCD码段的合规性要求全部进入BCD码的数容空间。
从右到左的整个装入过程实际就是按十进制规则重新进位表示原数值,其实质就是二进制转十进制公
式的变相应用。即
𝑁
(
)
= 𝑏
2
+ 𝑏
2
+ ⋯ + 𝑏
2
+ 𝑏
2
= 2
(
𝑏
2
+ 𝑏
2
+ ⋯ + 𝑏
2
)
+ 𝑏
2
= 2
[
2
(
𝑏
2
+ 𝑏
2
+ ⋯ + 𝑏
2
)
+ 𝑏
2
]
+ 𝑏
2
= ⋯
= 2
[
2
(
2
[
2
(
𝑏
2
)
+ ⋯
]
+ 𝑏
2
)
+ 𝑏
2
]
+ 𝑏
2
将二进制数从右至左移位装入BCD码段的过程实际就是“2
[
2
(
2
[
2
(
𝑏
2
)
+ ⋯
]
+ 𝑏
2
)
+ 𝑏
2
]
+
𝑏
2
”这个式子的实现过程,只不过在装入过程种需要“逐步”检查各段(重点是入口段)是否满足十进
制规则这一合规性条件。
完成了普适原理的分析,在实现上我们只需将基本原理的实现方法加入到十进制规则检查过程即可完
成二进制数到BCD码的转换。即每向左移位一次,就得对BCD码数容空间中的各段(每段对应于一个十进
制位)进行一次合规性检查,以确保每次移位后各段的值均满足合规性要求,也就是将上式乘2的中间结果
约束在BCD码段的允许范围内。
检查方法有以下两种:
1.直接检查。入口段(低4位)的值是否≥10,否则保持原样,是则+6修正并进位,且进位后还需检
查各高位段的值是否满足合规性要求。缺点是需要代码来完成进位(相当于手动进位)。
实际上,对高位段的值检查合规性只需检查前4次移位后的结果即可,除非期间发生向高位段进位的
事件,导致高位段的值出现了变化,否则已完成连续4次检查的结果再移位多少次都仍是保持合规性的—
—即平移不变性。但是,连续4次检查后,即便发生向高位段进位的事件,也无需对所有高位段进行检查,
而只需检查到连续4次未再发生进位的高位段即可——进位带来的影响是有限的。如
… ∎
∎
∎
…
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/45456d0359f64d8ba8517a3a2a403d68_zjyzfn.jpg!1)
乘羽扬风
- 粉丝: 7
- 资源: 21
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)