171221—8421BCD码、进制转换
8421BCD码
人性化的存在
计算机内毫无例外地都使用二进制数进行运算,但通常采用8进制和十六进制的形式读写。对于计算机技术专业人员,要理解这些数的含义是没问题,但对非专业人员却不那么容易的。由于日常生活中,人们最熟悉的数制是十进制,因此专门规定了一种二进制的十进制码,称为BCD码(Binarycoded Decimal),它是一种以二进制表示的十进制数码。
8421BCD为最常用的一种BCD码
表示方法:
以一个4位二进制数表示十进制中一个一位数,而后用四个四个的组合表示多位十进制数。
“8421”即:四位二进制数的权重各为8421。
【百度百科】
二进制编码的十进制数,简称BCD码(Binarycoded Decimal)。这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 下图为十进制数和8421BCD编码的对应关系表:
进制转换
不同进制->十进制:
整数&小数部分:
将各位数字乘上其所在位的权重,按权展开相加
十进制是权是10;二进制是权是2;十六进制是权是16;八进制是权是8;
例:
110011(二进制数)=1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=32+16+2+1=51
1507(八进制数)=1*8^3 + 5*8^2 + 0*8^1 + 7*8^0 = 839
2AF5(十六进制数)=2*16^3 + A*16^2+ F*16^1 + 5*16^0 = 10997
十进制->不同进制:
整数部分:除权(倒序)取余
以二进制为例:
十进制数13转化成二进制数
13/2=6 余1
6/2=3 余0
3/2=1 余1
1/2=0 余1
结果:1101
小数部分:乘权取整
这一操作可以无限进行下去,会得到一个无限循环小数。在实际应用中应要求精度。
以下搬自百度知道:
0.25 二进制得0.01
0.25*2=0.5 取0 0.5*2=1取1 所以是0.01
这是为什么呢,看分数比较容易看出原因
十进制0.25 从十进制方式看,也就是 分数2/10 + 分数5/100
先看十进制
乘10(得2.5)的整数位得2 ,也就是十进制的小数第一位(这里你看到的2,其实是十分之二)
除去整数位,再乘10(得5), 就是小数位第二位(这里你看到的5其实是一百分之五)
十进制0.25 从二进制方式看,也就是 分数0/2 + 分数1/4
再看
乘2(得0.5)的整数位得0 , 也就是二进制的小数第一位(这里你看到的0,其实是二分之零)
除去整数位,再乘2(得1), 就是小数位第二位(这里你看到的1其实是四分之一)
再看
0.25,等于 0/2 + 1/4,即得二进制0.01。
0.75,等于 1/2 + 1/4,即得二进制0.11。
这种方法其实正如十进制7,等于4+2+1,即得二进制111一样。
其实乘二取整,意义就在于,每次乘2,在整数位看到的都是 2的n次方分之一的分子的值,即二进制小数点后第n位的值。
(引:https://zhidao.baidu.com/question/289714830.html)
二进制&二进制的家人们
二进制数->八进制数:分组
从小数点开始,整数部分向左、小数部分向右,每3位为一组不,足3位的要用“0”补足3位。
用一位八进制数的数字表示就得到一个八进制数。
例:
将二进制的10110.0011 转换成八进制:
分组:
010 110 . 001 100
26 . 14
即:(10110.011)2 = (26.14)8
八进制数->二进制数:直接
把每一个八进制数转换成3位的二进制数,就得到一个二进制数。
例:将八进制的37.416转换成二进制数:
3 7 . 4 1 6
011 111 .100 001 110
即:
(37.416)8 =(11111.10000111)2
二进制->十六进制 :分组
二进制数转换为十六进制数的方法也类似,从右到左,四位一组,不够补0
例:
0101 1011 1011
结果为:5BB
十六进制数->二进制数:
把每一个十六进制数转换成4位*(体现了一致性)*的二进制数,就得到一个二进制数。
例:
将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110
6 1 . E
即:
(1100001.111)2 =(61.E)16
附,还算能用的进制转换工具,百度即得:
http://tool.oschina.net/hexconvert
171221—8421BCD码、进制转换相关推荐
- Java的不同进制输出,[DanoR][Java小码][进制转换::将double转换为不同进制后用String输出]...
功能简述 进制转换 输入: 一个数(double),目标进制(int)和小数的保留位数(int) 输出: 相应进制的表示方式(String) 参数说明 double number; //将要被转换的数 ...
- Java字节码进制转换
在理解二进制和十进制.十六进制时发现的,作为后续参考保存! public class codeCon {/*** 字符串转换成十六进制值* @param bin String 我们看到的要转换成十六进 ...
- 进制转换 位运算(包括补码、原码、反码、~0等一些零碎东西一次说清)
我发现网上关于标题上的内容介绍的都很零碎,因此为了方便查找.也为了本人对这一部分的充分理解,就想着写一篇这样的博客(我分成了几个部分,以便查找): 一.进制转换 让我们先来看看各个进制的定义: 十进制 ...
- python学习-综合练习三(斐波那契数列、阿姆斯特朗数、//和/、十进制转二进制bin、八进制oct、十六进制hex、进制转换源码、python中::和:的区别)
文章目录 斐波那契数列 阿姆斯特朗数 十进制转二进制bin.八进制oct.十六进制hex 补充进制转换源码 python中::和:的区别 说明:本篇博文的知识点大部分来自 Python3 实例 斐波那 ...
- python二进制反码例题_python中的进制转换和原码,反码,补码
python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...
- 进制转换 和 正数负数——原码,反码,补码
进制转换 定义:进制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制.八进制.十进制与十六进制,它们之间**区别在于数运算时是逢几进一位.比如二进制是逢2进一位,十进制也就 ...
- 进制转换 原码、反码、补码
进制转换: 为什么要使用二进制.八进制.十六进制: 因为现在的CPU只能识别高低两种电流,只能对二进制数据进行计算 二进制数据虽然能够直接被CPU识别计算,但是不方便书写.记录,把二进制转换成八进制是 ...
- 进制转换及如何求校验码(海明校验码及循环冗余校验CRC码)
文章目录 前言 一.进制转换 1.1 二进制转换为八进制数和十六进制数 1.2 任意进制数转换为十进制数 1.3 十进制转换为任意进制 二.校验码求取 2.1海明校验码 2.2循环冗余校验CRC码 总 ...
- 数据的表示和运算,进制转换,BCD码,奇偶校验码,海明校验码,循环冗余码
进制转换,逢r进一 基数:每个数码位所用到的不同符号的个数,r进制的基数为r 二进制 0 1 B 八进制 0~7 O 十进制 0~ 9 D 十六进制 0~9 ,A ~F( 10 ~15) H或0x 二 ...
- 软考笔记——1.1、计算机硬件组成、数据的进制转换、校验码
一.计算机硬件组成 计算机的硬件基本系统由五部分组成:运算器.控制器.存储器.输入设备(如鼠标键盘).输出设备(如显示器) 存储器分为内部存储器(即内存.容量小,速度快,临时存放数据)和外部存储器(即 ...
最新文章
- 【SQL】sql语句LEFT JOIN(拼接表)详解
- 使用core data
- namespace-C#命名空间
- Kylin 2.0升级总结
- 关于oracle的物理dg,oracle物理DG管理-redo数据传输,应用与三种模式
- dibbler-server安装配置
- 网络QoS原理与实现
- linux设置文件最大权限,linux chmod 数字设置权限(最大权限)
- SlickEdit 使用技巧大收集
- android developer tiny share-20170603
- 科目一知识点分类记忆
- python植物大战僵尸辅助_【Python】实现植物大战僵尸修改(二)
- 2005年计算机图书出版路在何方——出版崩溃了吗?
- 7.sqli-labs-Less7
- 在一个线程中 sleep(1000) 方法,将使得该线程在多少时间后获得对 CPU 的控制(假设睡眠过程中不会有其他时间唤醒该线程)?
- 资源依赖项注入失败: org.springframework.beans.factory.BeanCreationException: Error creating bean with name
- 力扣-无重复字符的最长子串
- Android学习计划
- Delphi SM2/SM4国密算法
- 一篇文章构建你的 NodeJS 知识体系