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,你說是十進制還是八進制或者十六進制?