当值x是2的非负整数n次幂时,即就是2^n, 我们很容易将x写成十六进制的形式,只要记住是x的二进制表示就是1后面跟n个0.
十六进制数字0代表4个二进制0.
因此,当n表示成i+4j的形式,其中0<=i<= 3时,我们可以把x写成开头的十六进制数字为1(i=0),2(i=1),4(i=2)或者8(i=3),后面跟着j个十六进制的0。
eg:x=2048=2^11, 有n=11=3+4*2,从而十六进制表示为0x800.
eg:x=131072=2^17,有n=17=1+4*4,从而十六进制表示为0x20000.
接下来谈谈十进制和十六进制间的转换吧
(1)十进制转换成十六进制
#!/usr/local/bin/perl
#Covert list of decimal numbers into hex
for($i = 0; $i < @ARGV; $i++){
printf("%d\t = 0x%x\n", $ARGV[$i], $ARGV[$i]);
}
一旦这个文件被设置为可执行的,命令
unix> ./d2h 100 500 751
会产生输出:
100 = 0x64
500 = 0x1f4
751 = 0x2ef
(2)十六进制转换成十进制
#!/usr/local/bin/perl
#Covert list of decimal numbers into hex
for($i = 0; $i < @ARGV; $i++){
¥val = hex($ARGV[$i]);
printf("0x%x = %d\n", $val, $val);
}