我是靠谱客的博主 飘逸雪糕,最近开发中收集的这篇文章主要介绍BCD压缩编码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    昨儿的移位运算被一个C++老鸟给误导了,不禁懊恼自己计算机组成原理学的太差了~!不多说了,进入正题!

BCD编码,百度百科上的定义解释的我云里雾里的,直接举例子说吧!

例如整数1和整数9,在计算机里用二进制存的话java是1个字节8位2进制数,即:

整数1: 0000 0001

整数9: 0000 1001

为什么会取1和9这两个数字呢,因为我们要存数字的话,无论多大的数字,每一位都是由0-9构成的,也就是每一位以二进制存的时候,高位都是0,这个就是BCD编码,有没有发现其实很浪费?!呵呵是的,浪费了高位的四个0.

如果将高位的四个0去掉,那么每一个字节(8位)就可以存进去两个数字,这样就会节约了存储空间,于是,压缩BCD编码也就诞生了~!于是上面的两个数字存储的时候,就变成了19H 在写法上,由于没有超过10,所以十六进制看起来和十进制的表现形式是一样的,但是不要被误导了哦~

(但是要说与此同时计算过程复杂度增加了,我还没有去考证,想来也是以时间换空间的例子吧.)

一般压缩BCD编码,都是要预留最高位作为符号位的,

例如我要存 3.14 ,转成压缩BCD码是 03H,14H

如果存-3.14 做法是这样的: 先将-3.14取绝对值,得到 03H 14H ,首位是0,其二进制表现形式(如今是4位) 0000 ,最高位取反的意思,也就是要将它变成1000 那么从0000到1000的运算,java里是用到了或运算,即是拿0|8即可.

    (偶还是菜鸟,难免写的也会有误导人的地方,希望不足之处大家予以指正.也不要完全相信我写的,这个是我自己理解的BCD压缩码)

转载于:https://www.cnblogs.com/miya2012/archive/2012/04/10/2439934.html

最后

以上就是飘逸雪糕为你收集整理的BCD压缩编码的全部内容,希望文章能够帮你解决BCD压缩编码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(167)

评论列表共有 0 条评论

立即
投稿
返回
顶部