数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)
目录
1.数制的转换
1)二,八,十六进制进制转十进制
加权系数求和法
2)十进制转二,八,十六进制
除基取余法(短除法)
减权定位法
3)二,八,十六进制的相互转换
2.BCD码
3.格雷码
4.原码,反码,补码
1)原码
2)反码
3)补码
总结
5.定点数和浮点数
1)定点表示法
2)浮点表示法
1.数制的转换
1)二,八,十六进制进制转十进制
加权系数求和法
上图就是加权系数求和的方法,就是把二进制数各位的权值乘上各位的系数,再加起来就是十进制数。来看一个简单的例子
100.01是一个二进制数,个位的权值和系数分别是和1,十位权值和系数分别是和0,百位权值和系数分别是和1,小数第一位权值和系数分别是和0,小数第二位权值和系数分别是和1
所以根据加权系数求和的方法:将各位的系数和权值相乘然后相加,最后得到十进制的结果
八进制和十六进制的方法相同,只是八进制的权为,十六进制的权为,下面再举两个例子
2)十进制转二,八,十六进制
除基取余法(短除法)
具体做法:把十进制数分为整数和小数部分,整数部分每次除以基数,保留余数,最后从后往前读,就是整数部分的X进制数;小数部分每次乘基数,取整数部分,最后从前往后读为小数部分。两部分组合在一起就是所求的数。
注意:
1.计算小数部分过程中,计算的整数不应该大于等于基数*(比如上图1.36*2=2.72,整数出现了2),这时应该将整数mod基数(就是除以基数,取余数)。
2.还有小数部分可能乘不尽,这是要注意题目要求保留几位小数
十转八和十六同理,只是除数和乘数变为了8和16
减权定位法
方法:拿二进制举例,我们可以轻松算出或者记得2的幂次方等于多少(比如=8,=16……2=1024等),所以我们可以把一个数拆分成几个基数为2的权相加的形式,然后根据权在二进制中的位置,从而写出二进制数。举个例子:
122.5 = 64 + 32 + 16 + 8 + 2 + 0.5= + + ++ += 1111010.1
3)二,八,十六进制的相互转换
我们知道八进制一位只能表示0~7, 十六进制一位只能表示0~15,对应二进制最多需要三位和四位数表示,所以二进制转八、十六进制时,可以将二进制数按三位、四位一组分开,分别求出再合起来,反之八、十六转二进制是将一位数转化为三位和四位的二进制数,最后合起来。(整数部分从各位开始分,小数部分从第一位开始分,最后位数不足补0)
举例:
二进制数:10100010.01
二转八:010100010.010 = 242.2
二转十六:10100010.0100 = A2.5
2.BCD码
简单的说,BCD码就是将十进制数的每位数字转换为四位的二进制数,常见的有8421,2421,5421和余3码
8421码:四位数的权值分别是8、4、2、1,就是每位数正常转化为四位二进制数
5421码:四位数的权值分别是5、4、2、1,也就是前五位和8421相同,以后1000代表5,和后三位表示的数加起来代表现在的数。
2421码:也称为对称反码,四位数的权值分别是8、4、2、1,也就是前五位和8421相同,有0和9,1和8,2和7,3和6,4和5互为反码。
余三码:在8421码的基础上加3
下面有一张表,大家可以对比看一下
3.格雷码
把循环节竖着排,横着看过来就是这个数的格雷码,举一个三位的例子
红黑蓝分别是三个循环节,000,0001,011,010分别就是1,2,3,4的格雷码。
可以发现格雷码相邻代码间只有1位不同+,如果发生错误更易于发现,因此格雷码是一种可靠性代码。
000
001
011
010
4.原码,反码,补码
真值和机器数:真值就是我们平常使用的数,由符号和数值组成;机器数是计算机内使用的数,数字用二进制表示,正号用0表示,负号用1表示
1)原码
注意:正号用0表示,负号用1表示,最高位为符号位
真值 | 原码 |
+1011 | 01011 |
-1011 | 11011 |
+0.1011 | 0.1011 |
-0.1011 | 1.1011 |
2)反码
正数和原码相同,负数符号位不变,全部取反
原码 | 反码 |
01011 | 01011 |
11011 | 10100 |
0.1011 | 0.1011 |
1.1011 | 1.0100 |
3)补码
正数和原码相同,负数符号位不变,全部取反后再加1(就是反码加一)
快速求法:负数时,尾数自低位向高位,第一个1以前的所有位(不包括符号位)全部取反。
优点:克服了原码运算的缺点,能够让符号位一起参与运算。
原码 | 反码 | 补码 |
01011 | 01011 | 01011 |
11011 | 10100 | 10101 |
0.1011 | 0.1011 | 0.1011 |
1.1011 | 1.0100 | 1.0101 |
总结
1)正数的原码,反码,补码相同
2)原码和反码表示0的数有两个,补码只有一个
3)原码、反码表示正负数的范围(对称):
+(-1)~ –(-1)
补码表示正负数的范围(非对称):
+(-1)~ – () (注意)
5.定点数和浮点数
1)定点表示法
定点表示法:由程序设计者约定,该程序中所有数的小数点固定在同一位置不变。
定点小数和顶点整数的范围(设字长为n+1位):
定点小数:1-~-(1-)
定点整数: -1~- ( -1)
8位定点数原码和补码的表示范围
2)浮点表示法
由于定点数表示的范围有限,所以我们引进浮点数来表示更大的数
浮点数的表示类似于科学计数法,r表示底数(类似于1.22中的10),二进制中就是2;
E表示阶数( 类似于1.22中的6);M表示尾数 ( 类似于1.22中的1.22)
规格化
规格化:计算机规定浮点数尾数部分用纯小数形式表示。
规格化的表示要求:
这是老师的课件,我解释一下:对于原码,小数点前表示符号位,小数点后表示数值,但数值必须做到有意义,所以小数点后的第一位数不能为0;对于补码,正数的要求和原码一致,负数规定小数点后的第一位必须是0(不用纠结,就是这样规定的,这样方便在计算机中操作),所以-0.5不能用补码的规格化表示
规格化浮点数取值范围
可以看到因为规格化负数用补码表示时,并不能取到-1/2,所以只能取到 -(1/2+)这样无限接近-1/2的数
最后来看一个规格化的例题
将X=-68(十进制)表示成浮点数,具体格式为:阶码为4位,尾数为8位,都用补码表示。
先把-68转化为二进制:-1000100
然后进行规格化处理(先用原码):011111000100
最后转化为补码:011110111100
<阶码为正不变,尾数符号不变,数值取补码>
先介绍到这里,这里肯定有许多不足,希望大家指出,大家有问题请在评论区留言
数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)相关推荐
- [数制与码制]: 有关十进制转换和二进制负数小数补码表示
文章目录 关于十进制转换 关于二进制负小数补码表示 关于十进制转换 数电第一课,关于各进制数的转换:2,8,16进制的转换也不用说什么,主要是关于10进制转换其他进制会麻烦一点: 而在这之间,由其他进 ...
- 机器数的三种表示形式---原码、补码、反码和移码
疫情严重,没去上班,总结学习一下.武汉加油,中国加油. 一.真值和机器数 介绍机器数的三种表示形式之前,先介绍一下真值和机器数. 带+.-符号的数叫真值,把符号数字化得到的数称为机器数(1表示-,0表 ...
- java 颜色 16进制转换_Java中Color和16进制字符串互相转换的方法
1.原理 主要是调用了toHexString(将int类型转为16进制字符串).parseInt(将字符串解析为int)这两个方法. 2.代码 public static void main(Stri ...
- 8421BCD码 5421BCD码 余三码 格雷码 余三循环码之间的关系,转换以及简易方法
8421BCD码 5421BCD码 余三码 格雷码 余三循环码之间的关系,转换以及简易方法 1. 有权码和无权码的包括 2.各种码值的介绍 8421码的简介 8421码又称为BCD码,是十进代码中最常 ...
- 计算机网络中的原码、反码、补码
写在前面 原码.反码.补码是计算机组成原理中的概念,是计算机网络的基础知识之一.这些概念是为了处理二进制数的符号位而引入的,常用于计算机中的整数运算,也常用于数据存储和传输等领域.因此,了解和掌握这些 ...
- 超详细介绍!!!带你认识各种进制数的及其转换以及原码,反码,补码
1.本文详细介绍了二进制,八进制,八进制和他们之间的相互转换 2.也详细介绍了原码,反码,补码以及它们之间的相互转换,让你更加了解计算机数据的底层运行逻辑 目录 一:认识各种进制数 1.十进制数 2. ...
- (三)《数字电子技术基础》——码制
目录 码制定义 二-十进制码(BCD) 8421-BCD 码 2421-BCD 码 余3码 余3循环码 格雷码 检错码和纠错码 误差检验码 误差纠错码 字符-数字代码 码制定义 码制:即用数字技术来处 ...
- 一维条码与二维条码的码制区别
一维条码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准. 一维条码的应用可以提高信息录入的速度,减少差错率,但是一维条码也存在一些不足之 ...
- 原码、补码、反码的转换
1.原码 (1)一个正数,他的原码就是它对应的二进制数字. (2)一个负数,按照绝对值大小转换成的二进制数,然后最高位补1,就是负数的原码. 2.反码 (1)正数的反码与原码相同(这是规定). (2) ...
最新文章
- idea命令行运行多个客户端_推荐一款神仙颜值的 Redis 客户端工具,开源啦
- scrollview 与 listView 的显示不全问题
- Codeforces 739B 	Alyona and a tree (树上路径倍增及差分)
- 宝马纯电动i4原型车谍照曝光 预计2021年上市
- 不服气不行,同样是码农,字节程序员的年薪居然达247万
- 换种思维看互联网公司分配时间!
- 第 16 章 垃圾回收相关概念
- MT6580 Android8.1调试移植费恩格尔指纹驱动
- margin-top的兼容问题
- NFine框架因新增页面而显示无法链接资源
- 金融机构如何应对核心系统分布式智能化升级大潮?
- 如何用计算机模拟光的传播,菲涅尔计算全息干涉图的制作与模拟再现.doc
- 奇怪的同床人:指纹现象……或state.gov与facebook.com
- java-No route to host 解决办法
- 北京交通大学万怀宇:时空交通数据预测方法及应用
- mysql隔离级别到底是什么
- 细说http状态码之301,304
- 吗咿呀嘿-用js来搞个简单的人脸识别
- IS61LV25616芯片技术手册
- vacuum freeze
热门文章
- 基于LSTM实现乐器声音音频识别
- win10每次开机后,D、E、F盘就不见了,需要进入“磁盘管理”重新分配
- 基于组态王的过程控制——以巧克力牛奶的生产为例
- 企业微信h5配置微信sdk(openEnterpriseChat),拉起外部联系人私信聊天。
- Nvidia Xavier平台CAN收发控制器调试记录
- 数据中心液冷方式优缺点对比及浸没式液冷表面强化处理
- cocos creator动态加载DragonBones
- 操作系统----大内核与微内核
- AMD Radeon GPU Injector tool | 老旧 AMD 显卡驱动工具
- Unity 实现游戏中多相机屏幕CutIn效果