16进制转10进制php
‘壹’ 16进制怎么转换成10进制
十六进制转换成十进制的具体算法是:
1、首先明白16进制数(从右到左数是第0位,第1位,第2位……)的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次这样排列下去。
2、明白ABCDEF表示的二进制数字分别是10,11,12,13,14,15。
3、十六进制转换成十进制的公式是:要从右到左用二进制的每个数去乘以16的相应次方,然后这些数字相加就是了。
例1:
2AF5换算成10进制:
第0位:5*16^0=5
第1位:F*16^1=15*16^1=240
第2位:A*16^2=10*16^2=2560
第3位:2*16^3=8192结
果就是:5*16^0+15*16^1+10*16^2+2*16^3=10997
例2:CE换算成10进制:
第0位:E*16^0=14*16^0=14
第1位:C*16^1=12*16^1=192
结果就是:14*16^0+12*16^1=206
进制转换的理论
1、 二进制数、十六进制数转换为十进制数:
用按权展开法把一个任意R 进制数a n a n-1 ...a1a 0 . a -1 a -2...a -m转换成十进制数,其十进制数值为每一位数字与其位权之积的和。
a n ×Rn+ a n-1×R n-1 +…+ a 1×R 1 + a 0×R 0 + a -1 ×R -1+ a -2×R -2+ …+ a -m ×R -m
2、 十进制转化成R 进制十进制数轮换成R 进制数要分两个部分:整数部分要除R 取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排 列) 。小数部分要乘R 取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列) 。
3、十六进制转化成二进制:每一位十六进制数对应二进制的四位,逐位展开。
4、 二进制转化成十六进制:将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。
‘贰’ 前几天看到一个php面试题,代码复制到环境中结果是400000,怎么想也想不通,哪位大神指点一下。
$a=0x01;//16进制转化成10进制1
$b=0x02;//2
<< 是位运算 意思是 1<<2 ,这个1是二进制的1,将1向左移2位即100(不够就补0),在转换成10进制是4
再举个例子 5<<3,5的二进制101,好理解写成000101,向左移三位即101000,10进制后40
printf("%x",($a<<$b.$b));就是 printf("%x",(1<<22));
得到的是10000000000000000000000,十进制就是4194304,你带进去printf("%x",4194304);
‘叁’ php 16进制计算转换十进制
1、echo只输出十进制数字,需要打印十六进制数字可以用print函数2、这个不能,需要前缀指定,例如10,你说是十进制还是八进制或者十六进制?