最快的进制转换法之一,8421
目录
推导8421码表
十进制快速转换为二进制
二进制快速转换为十进制
二进制转换为八进制
八进制转二进制
二进制转换为十六进制
十六进制转二进制
其他进制互相转换
bcd中的8421可以方便地进行进制转换。
不仅可以实现二进制和其他进制的互转,还可以在其他进制之间进行互转(先转成二进制再进行互转)。
例如,八进制转十六进制是八进制-二进制-十六进制。
推导8421码表
推8421码表非常简单。
其实就看某个数是如何通过8421构建的。
其中,二进制包含0、1,八进制包含0-7、十进制包含0-9,十六进制包含0-F
对于二进制0和1,其8421码只有两个,分别为0000和0001.
那么,该如何推导十进制的8421码呢?
以3为例,我们可以知道3=2+1,此时8421表达式为XX21,即0011.
对于7呢,我们可以知道7=4+2+1,此时8421表达式为X421,即0111
对于9呢,我们可以知道9=8+1,此时表达式为8XX1,即1001.
如何推导十六进制?原理很简单。其实就是将A-F用大于9的数进行表示。
例如15=F,15=8+4+2+1,则F=1111.
13=8+4+1=1101=B
对于八进制,其实它等价于十进制0-7的码表。
十进制快速转换为二进制
对于更高的十进制数,例如,97
我们需要将8421扩展到2的更高次方。
令97<2^max,Max为正整数
我们可以得到2^max的最大值为128.
新的8421码为128,64,32,16,8,4,2,1(共8个数字,8是4的倍数,便于我们进行计算)
其中128位为0。
64+32=96,还差1.
即97=64+32+1=01100001,我们可以去除高位0.
提示:对于小数部分,我们仍然使用传统的乘二法,它的计算量很小,我们不需要寻求新的解法。
你可以参考:十进制小数转化为二进制小数 | 菜鸟教程 (runoob.com)
二进制快速转换为十进制
例如,对于46,我们按照上述算法将其算成二进制,46=32+8+4+2=00101110
那么101110如何转化为10进制呢。
首先101110为6位,我们需要补齐位数到4的倍数,这里需要补到8位,也就是补成00101110.
很显然,我们按照上面的解法,需要扩展次方,但我们不知道00101110代表多大,不是吗?
你当然可以按照传统的解法进行解,
如果你希望使用8421,其实也是一样的,我们需要找到第一个1所在的位置,也就是第三位,即2^5.
2^5=32
因此,我们继续列出一个扩展的8421:
32 16 8 4 2 1
32位为1,16位为0,8、4、2都为1.
最后的结果就是32+0+8+4+2=46.它与传统的解法其实是一样 。
二进制转换为八进制
假设存在1000101010,求它的八进制。
注意,八进制转二进制转换的结果数字数量为3的倍数,而不是4的倍数,这是一个特例,二进制转八进制也符合这一条,例题它是10位数,你需要将其补齐到12位。如果你遇到了13位,则应当补齐到15位而非16位。
即001 000 101 010。
对码表可得1052Q.
八进制转二进制
以1052Q为例。
当涉及八进制时,我们需要将对应码表的第一位0省略,即通过观察0-7的十进制码表数据与八进制相同,但八进制0-7的首位码均为0,所以我们需要省略它,仅算三位。
这也就是说,我们在使用421码。
其中,2=010,5=101,0=000,1=001
则1052Q=001 000 101 010B
二进制转换为十六进制
假设存在一串二进制0100101111010011,求其十六进制。
将其按四个一组划分,不足补齐。得:
0100 1011 1101 0011
照抄码表得4,11,13,3
即4,B,D,3,得4BD3H
十六进制转二进制
假设存在一个十六进制4BD3,求十六进制。
4=0100
B=11=1011
D=13=1101
3=3=0011
结果为0100 1011 1101 0011.
其他进制互相转换
先转成二进制再进行互转
易错点:
八进制没有按照3位划分。
10进制数没有按照10进制的计算方法进行扩展8421计算。
最快的进制转换法之一,8421相关推荐
- 8421码(快速的进制转换法)
8421码
- 快速进制转换法:8421码
1 什么是8421码 8421码十进制和二进制的快速转换 8421码是中国大陆的叫法,它是BCD码中最常用的一种,这种编码方式中每一位二进制代码的1都是代表一个固定的数值然后把每一位1代表的数的十进制 ...
- day017:Java进制转换、原码反码补码、位运算、位移运算符
一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...
- Java IDEA Debug进制二维数组
1.Debug模式 1.1 什么是Debug模式 是供程序员使用的程序调试工具,它可以用于查看程序的执行流程,也可以用于追踪程序执行过程来调试程序. 1.2 Debug介绍与操作流程 如何加断点 选择 ...
- -变量,进制,数据类型,标识符
###02.01_Java语言基础(常量的概述和使用)(掌握) * A:什么是常量 * 在程序执行的过程中其值不可以发生改变 * B:Java中常量的分类 * 字面值常量 * 自定义常量(面向对象部分 ...
- 计算机中的进制(二进制,八进制,十进制,十六进制)
编写背景 最近做了个项目,对接蓝牙设备通信,对接的时候第三方的设备需要协议加密,就用到了位运算(&,>>,<<),只是这个加密算法不是我写的,是公司的架构师写的,他是写 ...
- java 基础进制概述和二,八,十六进制图解
文章目录 1. 进制数概念 2. Java语言基础(不同进制数据的表现形式)(掌握) 2.2_Java语言基础(任意进制到十进制的转换图解)(了解) 2.3_Java语言基础(十进制到任意进制的转换图 ...
- java15转2进制_Java-Day02,进制转换
一.Java语言基础(常量的概述和使用)(掌握) * 1.什么是常量 * 在程序执行的过程中其值不可以发生改变 * 2.Java中常量的分类 * 字面值常量 * 自定义常量(面向对象部分讲) * 3. ...
- Java学习笔记 --- 进制转换
一.进制 1.1.二进制:0,1表示,满2进1,以0b或者0B开头. 1.2.八进制:0-7,满8进1,以数字0开头. 1.3.十进制:0-9,满10进1 1.4.十六进制:0-9及A(10)-F(1 ...
- 数据类型,数据类型转换以及进制转换
一,字面值常量 *字符串常量 用双引号括起来的内容 *整数常量 所有整数 *小数常量 所有小数 *字符常量 用单引号扩起来的内容,里面只能放单个数字,单个字母或单个符号 (''中放的必须是单个字符,1 ...
最新文章
- calendar获取月份少一个月_6月份,花园小学、铁岭小学等哈尔滨南岗校区部分二手房量价齐涨...
- 他2年拿下博士学位,发表11篇顶会论文!浙大校友李旻辰斩获SIGGRAPH最佳博士论文奖...
- 前端错误信息收集(errorEruda)解析
- 在 tensorflow 和numpy 中矩阵的加法
- 大神开发的模板框架 包括常见的功能
- 2013年快要过去了,为新来的2104计划
- linux 手动控制cpu转速,Linux 手动计算CPU使用率
- 腾讯一面总结-web前端-2018.4.11
- JavaWeb的环境配置
- 帆软报表扩展列计算同比环比
- php发出声音,电容也会发出声音!电容啸叫是怎么产生的?如何解决?
- 云安全,到底是怎么一回事?
- 专业动漫库好看的3d动漫推荐(3D动漫排行榜2022)
- 基于OpenStack的云计算平台搭建
- 在Linux中查找和删除重复文件的4种方法
- sql 开发html,uap开发sql
- 千叶县政府将在2020年东京奥运会和残奥会期间推出虚拟旅游体验
- classtwo_单表查询
- 世界银行1960-2019年制造业增加值
- Python之路Day2
热门文章
- 北大2011年计算机系录取浙江毛,湖州这11位同学被清华北大录取!
- oracle19c windows 桌面版 安装
- Next.js基本使用
- php邮件发送可以发送图片吗,phpmailer发送图片
- 美团后台开发暑期实习面经(一面+二面)已offer
- 在php中phr是什么意思,phr. 相当多的_____
- 显卡的优化以提高计算机性能作用,事实:[图形卡]黄卡驱动的“优化以提高计算性能”问题,只需进行简单测试即可...
- 翼支付个人账单查询接口
- android系统运行缓慢,安卓手机运行速度慢怎么办 手机运行速度慢如何解决 - WiFi共享大师...
- 每周一喂丨图说WiFi安全