数制的概念 数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进制,二进制和十六进制。
数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。计算机是信息处理的工具,任何信息必须转换成二进制形式数据后才能由计算机进行处理,存储和传输。
人们通常使用的是十进制。它的特点有两个:有0,1,2….9十个基本数字组成,十进制数运算是按“逢十进一”的规则进行的.
在计算机中,除了十进制数外,经常使用的数制还有二进制数和十六进制数.在运算中它们分别遵循的是逢二进一和逢十六进一的法则.
二进制数有两个特点:它由两个基本数字0,1组成,二进制数运算规律是逢二进一。
为区别于其它进制数,二进制数的书写通常在数的右下方注上基数2,或加后面加B表示。
例如:二进制数10110011可以写成(10110011)2,或写成10110011B,对于十进制数可以不加注.计算机中的数据均采用二进制数表示,这是因为二进制数具有以下特点:
1) 二进制数中只有两个字符0和1,表示具有两个不同稳定状态的元器件。例如,电路中有,无电流,有电流用1表示,无电流用0表示。类似的还比如电路中电压的高,低,晶体管的导通和截止等。
2) 二进制数运算简单,大大简化了计算中运算部件的结构。
二进制数的加法和乘法运算如下:
0+0=0 0+1=1+0=1 1+1=10
0×0=0 0×1=1×0=0 1×1=1
由于二进制数据的基R较小,所以二进制数据的书写和阅读不方便,为此,在小型机中引入了八进制。八进制的基R=8=2^3,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加Q表示 例如:二进制数据 ( 11 101 010 . 010 110 100 )2 对应 八进制数据 ( 3 5 2 . 2 6 4 )8或352.264Q.
由于二进制数在使用中位数太长,不容易记忆,所以又提出了十六进制数
十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数10~15),十六进制数运算规律是逢十六进一,即基R=16=2^4,通常在表示时用尾部标志H或下标16以示区别。
例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。
对于形式化的进制表示,我们可以从0开始,对数字的各个数位进行编号,即个位起往左依次为编号0,1,2,……;对称的,从小数点后的数位则是-1,-2,……
进行进制转换时,我们不妨设源进制(转换前所用进制)的基为R1,目标进制(转换后所用进制)的基为R2,原数值的表示按数位为AnA(n-1)……A2A1A0.A-1A-2……,R1在R2中的表示为R,则有(AnA(n-1)……A2A1A0.A-1A-2……)R1=(An*R^n+A(n-1)*R^(n-1)+……+A2*R^2+A1*R^1+A0*R^0+A-1*R^(-1)+A-2*R^(-2))R2
(由于此处不可选择字体,说明如下:An,A2,A-1等符号中,n,2,-1等均应改为下标,而上标的幂次均用^作为前缀)
举例:
一个十进制数110,其中百位上的1表示1个10^2,既100,十位的1表示1个10^1,即10,个位的0表示0个100,即0。
一个二进制数110,其中高位的1表示1个2^2,即4,低位的1表示1个2^1,即2,最低位的0表示0个2^0,即0。
一个十六进制数110,其中高位的1表示1个16^2,即256,低位的1表示1个16^1,即16,最低位的0表示0个16^0,即0。
可见,在数制中,各位数字所表示值的大小不仅与该数字本身的大小有关,还与该数字所在的位置有关,我们称这关系为数的位权。
十进制数的位权是以10为底的幂,二进制数的位权是以2为底的幂,十六进制数的位权是以16为底的幂。数位由高向低,以降幂的方式排列。
1.二进制数、十六进制数转换为十进制数(按权求和)
二进制数、十六进制数转换为十进制数的规律是相同的。把二进制数(或十六进制数)按位权形式展开多项式和的形式,求其最后的和,就是其对应的十进制数——简称“按权求和”.
例如:把(1001.01)2转换为十进制数。
解:(1001.01)2
=1*8+4*0+2*0+1*1+0*(1/2)+1*(1/4)
=8+0+0+1+0+0.25
=9.25
把(38A.11)16转换为十进制数
解:(38A.11)16
=3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方
=768+128+10+0.0625+0.0039
=906.0664
2.十进制数转换为二进制数,十六进制数(除2/16取余法)
整数转换.一个十进制整数转换为二进制整数通常采用除二取余法,即用2连续除十进制数,直到商为0,逆序排列余数即可得到――简称除二取余法.
例:将25转换为二进制数
解:25÷2=12 余数1
12÷2=6 余数0
6÷2=3 余数0
3÷2=1 余数1
1÷2=0 余数1
所以25=(11001)2
同理,把十进制数转换为十六进制数时,将基数2转换成16就可以了.
例:将25转换为十六进制数
解:25÷16=1 余数9
1÷16=0 余数1
所以25=(19)16
3.二进制数与十六进制数之间的转换
由于4位二进制数恰好有16个组合状态,即1位十六进制数与4位二进制数是一一对应的.所以,十六进制数与二进制数的转换是十分简单的.
(1)十六进制数转换成二进制数,只要将每一位十六进制数用对应的4位二进制数替代即可――简称位分四位.
例:将(4AF8B)16转换为二进制数.
解: 4 A F 8 B
0100 1010 1111 1000 1011
所以(4AF8B)16=(1001010111110001011)2
(2)二进制数转换为十六进制数,分别向左,向右每四位一组,依次写出每组4位二进制数所对应的十六进制数――简称四位合一位.
例:将二进制数(000111010110)2转换为十六进制数.
解: 0001 1101 0110
1 D 6
所以(111010110)2=(1D6)16
转换时注意最后一组不足4位时必须加0补齐4位
1)R进制转换成十进制
任意R进制数据按权展开、相加即可得十进制数据。 例如:N = 1101.0101B = 1*2^3+1*2^2+0*21+1*2^0+0*2^-1+1*2^-2+0*2^-3+1*2^-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.3125
N = 5A.8 H = 5*161+A*160+8*16-1 = 80+10+0.5 = 90.5
2)十进制转换R 进制
十进制数转换成R 进制数,须将整数部分和小数部分分别转换.
1.整数转换----除R 取余法 规则:(1)用R 去除给出的十进制数的整数部分,取其余数作为转换后的R 进制数据的整数部分最低位数字; (2)再用2去除所得的商,取其余数作为转换后的R 进制数据的高一位数字; (3)重复执行(2)操作,一直到商为0结束。 例如: 115 转换成 Binary数据和Hexadecimal数据 (图2-4) 所以 115 = 1110011 B = 73 H
2.小数转换-----乘R 取整法 规则:(1)用R 去除给出的十进制数的小数部分,取乘积的整数部分作为转换后R 进制小数点后第一位数字; (2)再用R 去乘上一步乘积的小数部分,然后取新乘积的整数部分作为转换后R 进制小数的低一位数字; (3)重复(2)操作,一直到乘积为0,或已得到要求精度数位为止。
进制数及转换详解
- 进制数(5958)
相关推荐
32位单精度IEEE-754浮点数转换为10进制数
本帖最后由 hejin515 于 2016-6-5 16:02 编辑
请问谁接做过32位单精度IEEE-754浮点数的数据采集,LabVIEW如何实现将其转换为十进制数?转化的方式如下图,用C好实现,但是用LabVIEW简直觉得不可思议。
2016-06-05 15:59:32
ADC转换的结果是二进制数,那转换的结果怎么换算成输入电压?
ADC转换的结果是二进制数吧,那转换的结果怎么换算成输入电压?
我知道要用到一个基准电压!那问题是怎么看一个ADC的基准电压呢?与输入电压的范围有什么关系呢?
麻烦好心人解答哈!!小弟非常感谢
2023-12-14 06:56:44
ADC转换的结果是二进制数,那转换的结果怎么换算成输入电压?
ADC转换的结果是二进制数吧,那转换的结果怎么换算成输入电压?我知道要用到一个基准电压!那问题是怎么看一个ADC的基准电压呢?与输入电压的范围有什么关系呢?麻烦好心人解答哈!!小弟非常感谢
2019-01-09 11:09:44
BCD码与十进制数相互转换,无密码,可直接用
本帖最后由 kevindandan 于 2019-6-5 16:09 编辑
前面有个串口的小应用,涉及到十进制数与BCD码的相互转换,看似很简单,也花了点时间。附件是LabVIEW2017的代码,希望同坛友共同交流,有改进意见的可以提,谢谢。
2018-09-08 07:56:13
C语言如何实现八进制转换为十进制输出
C语言实现 八进制转换为十进制输出八进制由 0~7 八个数字组成 以0开头(注意是数字 0,不是字母 o,例如 int a = 015;//换算成十进制为 13;#defineVAL0015宏定义
2021-07-15 07:38:55
KEIL5调试时能否把调试窗口中的十六进制数转换为十进制显示?
各路神请教大一下,keil5调试时,能否把调试窗口中的十六进制数转换为十进制显示,如果可以,该怎么设置?
2019-08-23 04:35:52
LTM4686通过pmbus读出的寄存器的值,怎么样转换为十进制数呢?
LTM4686 通过pmbus读出的寄存器的值,怎么样转换为十进制数呢?是否有转换公式呢?如温度、电压、电流等。
2024-01-05 06:47:13
labview中如何将一个3字节的十六进制数转换为十进制
求教大神,如何用labview实现将一个3字节的十六进制数转换为十进制,如将7D8B79转换为对应的十进制8227705。望大神指点!
2015-07-22 16:39:23
labview中字符串转换为16进制的数搞不清楚了
我再程序框图中将VISA读取函数读取的字符串通过截取部分字符串的方式拆分成四部分,除了开头的FF,剩余的我想分成四个数据,但是截取之后转换为16进制的数时结果为0,求各路大神帮助
2017-04-25 15:42:26
labview分享VI:36进制字符串与10进制数值相互转换
本帖最后由 liuh199416 于 2019-6-4 16:52 编辑
前几天写客户提了个要求,要我增加36进制的计数功能,由0-9和A-Z组成,我就简化了一下,做了这个36进制和10进制转换的VI,再用十进制数进行计算,最后再转回36进制。如图具体程序见附件
2019-05-27 19:25:13
labview编程模拟十进制数到二进制数的转换过程
模拟十进制数到二进制数的转换过程,以LED来模拟各个二进制位,并能以动画方式模拟计数的过程。 选择手动方式时,将8个LED变成滑动条中数字的二进制(基数2)表示。例如,如果滑动条设置为数字10(在
2018-12-07 22:20:10
labview里单精度浮点数和十六进制数如何相互转换?
我需要将一个单精度的浮点数(如0.33)转换为十六进制数然后通过串口发送,同时还需将串口读取的十六进制数转换为单精度浮点数。 求问在labview里如何使浮点数和十六进制数相互转换?
2015-10-14 11:04:28
xilinx网络服务器怎么将十六进制数转换为二进制数?
嗨 在xilinx网络服务器应用程序中,我使用ml402板与xilinx 10.1版本...我能ping,但网页没有弹出将十六进制数转换为二进制数...请帮我解决这个问题.... 。上次我也没有得到任何回复我的问题....我正在等待一些有用的建议!!!!
2020-03-26 10:33:33
关于两位十进制数转换成二进制数的仿真 求助啊
求助,不怎么懂这题该怎么做。求教。用两片四位全加器74283和必要的逻辑门设计一个数制转换电路,实现将输入的两位十进制数转换成二进制数,十进制数的输入采用8421BCD码来表示。用multisim仿真画图。
2016-07-01 20:13:27
关于十六进制转换问题请教
我在做下位机与上位机通讯时,返回的是十六进制数组,想将返回数组提取有用数据后(数组2)转换为十进制数输出(数组3),再写入表格控件里。为什么在FOR循环里转换不了,数组3输出都是0。请教有经验高手解答,谢谢!如下图所示。
2015-01-26 10:02:58
十进制数的位权图
十进制 好,那就让我们来看看十进制 所谓十进制就是以10为基数的计数体制,其计数规律是逢十进一。 图1.3.1展示了十进制的位号和位权之间关系的图解。位号3210-1-2-3十进制数
2009-04-06 23:47:02
十进制转换十六进制,十进制数字过长,转换结果报错
我用数值转换十六进制的函数,当数字比较短时转换是没有问题的,可当数字达到一定长度时,就会出现错误的转换结果,可是我需要这么长的转换,有没有高数指点下,谢谢~
2015-04-06 22:21:17
十进制和二进制之间的转换原理
十进制和二进制之间的转换 既然一个数可以用二进制和十进制两种不同形式来表示,那么两着之间就必然有一定的转换关系。 由十进制数的一般表示式: 可以得到整数的一般表达式: 将等式两边分别除以2
2009-04-06 23:54:14
十六进制和八进制转换原理
,可以得到十六进制数的一般表达式:例:十六进制转换为十进制: (4E6)H= 4×162+14×161+6×160 = 4×256+14×16+6×1=(1254)D例:二进制转换为十六进制
2009-04-06 23:54:44
十六进制字符串转成10进制数?
条件说明:0 labview 2018,win10 64位1 数据来源 0-10V adc 采集,通过串口发送,数据为16进制数 9600 8 0 12 串口能够读取数据,如图1所示3 其中图1中
2020-12-11 22:01:28
十六进制数字符串至数值转换的问题
`通过串口发送和接收数据。接收到的十六进制数据想要变为十进制数据输出。但是用“十六进制数字符串至数值转换”这个空间最后的显示结果是0。自认为是十六进制数中出现了空格的原因。不知哪位高手能够解答一下如何能将字符串中的空格去掉或者通过其他什么方法能够将十六进制数转化为十进制数输出。谢谢!`
2013-04-09 10:47:40
十六进制数字符串至数值或字符转换的问题
十进制数),“字符串到字节数组” 转换是按每一位转换的(即48.49.48.50.....) 有没有什么好办法解决啊?通过串口接收到的字符串是以十六进制显示的,这样通过十六进制数字符串至数值转换这个控件
2015-10-09 15:03:04
如何使用printf显示16进制数
//使用printf显示16进制数//使用printf显示16进制数void UART0_ShowHex(uint8 *buf,uint8 len){ uint8 i; printf("
2021-11-26 08:11:49
如何将10进制的一个数如11转换成16进制数0X0B
如何将10进制的一个数如11转换成16进制数0X0B,然后与原来的16进制数组 01 02 03 04 05放在一起组成 0B 01 02 03 04 05,我用数值至十六进制字符串转换这个函数把
2014-09-06 15:36:31
如何将SPI Master转换为十六进制数?
大家好,我需要通过SPI Master发送十进制数,但是SpimgWruteXDATA()只能发送十六进制数。如何发送小数?如何将它们转换为十六进制,然后放入SPimeWruteXDATA()函数?问候,Hakob
2019-09-30 11:15:52
如何将labview串口接收到的多路16进制数据转换成相应的10进制数,并可以选择输出
如何将labview串口接收到的多路16进制数据转换成相应的10进制数,并可以选择输出?小弟目前已经做到串口收到的数据先转换成十进制,强制转换成整形数据,再除以100,变成2位精度的小数,然后直接
2016-04-07 14:26:40
如何理解二进制运算规则 二进制是如何运算的
的数都是0)。小数部分也一样,但精确度较少。(2)二进制转换为八进制:采用“三位一并法”(是以小数点为中心向左右两边以每三位分组,不足的补上0)这样就可以轻松的进行转换。例:将二进制数
2019-12-11 17:49:02
常用的进制转换方法
实际工作中,经常需要将某个进制的数转换成其他进制的数,最常碰到就是10进制转16进制和10进制转2进制。 10进制转换成其他进制使用的方法叫“除k取余法”,“除k”中这个k就是我们需要转换
2021-01-14 16:37:47
怎么将16位二进制数转换成十进制数的函数?
有没有人建立一个将16位二进制数转换成十进制数的函数?谢谢,JB 以上来自于谷歌翻译 以下为原文Has anyone built a function(s) that converts a 16-bit binary number into decimal?Thanks,JB
2019-03-26 11:21:54
怎么把一个十进制数转换成4字节的十六进制数?
如题,向串口发送十六进制数,例如10000转换成0x00,0x00,0x27,0x10,然后送到串口,用数值至十六进制字符串函数,转成的是2710,不是我希望的,怎么转啊,求高手,谢谢!
2014-11-08 20:52:31
求教!matlab实现任意十进制数转换成十六进制的程序。
程序怎么编啊。。不会啊。。{:4_106:}dec2Hex命令十进制数范围太小。求大神帮忙~帮忙写一下程序~~跪谢!!!
2013-12-19 21:25:40
程序数据进制转换16进制 10进制 2进制的 互相转换的软件
本帖最后由 a2900755 于 2016-4-18 16:14 编辑
做了一套 数据转换 软件 16进制 10进制 2进制的 互相转换的软件
2016-04-18 16:12:27
请问怎么将ASCII码转换成16进制数?
遇到麻烦了:用51单片机想把红外遥控器的键值显示在1602上,可是显示的是ASCII码,不能如实反应出遥控器解码出来的16进制数。如何在1602上显示出红外遥控器的16进制键值?谢谢!
2019-01-14 04:24:29
进制转换
本文介绍了二进制、十八六四种之间相互的转换,大家 本文介绍了二进制、十八六四种之间相互的转换,大家 本文介绍了二进制、十八六四种之间相互的转换,大家 本文介绍了二进制、十八六四种之间相互的转换,大家
2016-08-31 16:11:340
评论
查看更多