16进制与10进制怎么互相转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16进制与10进制怎么互相转换相关的知识,希望对你有一定的参考价值。
本人正在学C语言,要知道16进制与10进制怎么互相转换,哪位高手帮帮忙,告诉我怎么用笔算解决!!谢谢!!
1、首先看一下十六进制与十进制的区别和表示方法,
2、十六进制数其实是由二进制数每四位转化分别转化为十进制数而来,
3、十六进制数转化为十进制数可以这样操作,
4、十进制数转化为十六进制数可以先转二进制再转十六进制,
5、十进制也可以直接转十六进制,完成效果图。
参考技术A1、看一下十六进制与十进制的区别和表示方法。
2、十六进制数其实是由二进制数每四位转化分别转化为十进制数而来。
3、十六进制数转化为十进制数可以这样操作。
4、十进制数转化为十六进制数可以先转二进制再转十六进制。
5、十进制也可以直接转十六进制。
6、Excel里提供了函数直接计算十六进制与十进制之间的转化,分别为DEC2HEX和HEX2DEC。
参考技术B 回答对于十六进制转十进制第一种:快速法(自己挺喜欢第一种的快捷)比如:012A=0 X 163 + 1 X 162+ 2 X 161 + 10 X 160 = 298说明:当中的十六进制:a=10 b=11 c=12 d=13 e=14 f=15第二种:迂回法将十六进制转换为二进制在转换为十进制(第一种小伙伴们或许不好理解,第二种容易理解)比如:1A首先转为二进制:0001 10100001 1010 再通过二进制的算法转十进制:0001 1010=1 X 24 + 1 X 23 + 1 X 21 = 26
参考技术C 进制转换1。二进制与十进制数间的转换
(1)二进制转换为十进制
将每个二进制数按权展开后求和即可。请看例题:
把二进制数(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10
(2)十进制转换为二进制
一般需要将十进制数的整数部分与小数部分分开处理。
整数部分计算方法:除2取余法 请看例题:
十进制数(53)10的二进制值为(110101)2
小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。请看例题:
将(0.5125)10转换成二进制。(0.5125)10=(0.101)2
2。 八进制、十六进制与十六进制间的转换
八进制、十六进制与十六进制之间的转换方法与二进制,同十进制之间的转换方法类似。例如:
(73)8=7*81+3=(59)10
(0.56)8=5*8-1+6*8-2=(0.71875)10
(12A)16=1*162+2*161+A*160=(298)10
(0.3C8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10
十进制整数→→→→→八进制 方法:“除8取余”
十进制整数→→→→→十六进制 方法:“除16取余” 例如:
(171)10=(253)8
(2653)10=(A5D)16
十进制小数→→→→→八进制小数 方法:“乘8取整”
十进制小数→→→→→十六进制小数 方法:“乘16取整” 例如:
(0。71875)10=(0.56)8
(0.142578125)10=(0.3C8)16
3. 非十进制数之间的转换
(1)二进制数与八进制数之间的转换
转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:
(423。45)8=(100 010 011.100 101)2
(1001001.1101)2=(001 001 001.110 100)2=(111.64)8
2。二进制与十六进制转换
转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:
(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2
(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16
PS:我个人喜欢先把十六进制换成二进制 在转化成十进制,反之亦然
用C写的函数
使用ltoa或itoa函数
#include <stdlib.h>
#include <stdio.h>
void main( void )
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;
_itoa( i, buffer, 10 );//转换成10进制字符
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );//转换成16进制字符
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );//转换成2进制字符
printf( "String of integer %d (radix 2): %s\n", i, buffer );
_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );
_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
本回答被提问者采纳 参考技术D 十六进制转成10进制 ,先转成2进制, 再将二进制转成10进制就行了。好像是不能直接转化。可以加我QQ 教你各个进制之间的转化。107217949
以上是关于16进制与10进制怎么互相转换的主要内容,如果未能解决你的问题,请参考以下文章