zoukankan      html  css  js  c++  java
  • 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压缩码)

  • 相关阅读:
    装箱拆箱操作
    《设计原本》试读:什么是设计
    代码大全中英文要点
    JSON对象和字符串之间的相互转换
    《设计原本》试读:何为真实?设计的概念
    Facebook后台技术探秘 世界最大的PHP网站
    重构模式:用异步计算替代长计算
    生命不息编程不止 Facebook CEO还在写代码
    万能的js复制按钮
    《网站设计解构》试读:1.1 可重用策略
  • 原文地址:https://www.cnblogs.com/miya2012/p/2439934.html
Copyright © 2011-2022 走看看