数据表示方式
计算机只认识0与1,(早期的计算机使用的是利用通电与否的特性的真空管,如果通电就是1,没有通电就是0, 后来沿用至今,我们称这种只有0/1的环境为二进位制,英文称为binary)记录的数据也是只能记录0与1而已,所以计算机常用的数据是二进位的。 但是我们常用的数值运算是十进位,文字方面则有非常多的语言,常用的语言就有英文、中文(又分正体与简体中文)等。 那么计算机如何记录与显示这些数值/文字呢?就得要透过一系列的转换才可以啦!
一:数字系统
十进位,890的意义为:
890= 8x102 + 9x101 + 0x100
二进位,我们来解释一下1101111010的数值转为十进位的话,结果如下:
1101111010= 1x29+1x28 + 0x27+ 1x26 + 1x25 + 1x24 + 1x23 + 0x22+ 1x21 + 0x20
= 512+256 +0+ 64 + 32 + 16 + 8+0+2+0= 890
这样你了解二进位的意义了吗?二进位是计算机基础中的基础喔!了解了二进位后,八进位、十六进位就依此类推啦! 那么知道二进位转成十进位后,那如果有十进位数值转为二进位的环境时,该如何计算? 刚刚是乘法,现在则是除法就对了!我们同样的使用十进位的890转成二进位来测试一下好了:
890/2=445 0
445/2=222 1
222/2=111 0
111/2=55 1
55/2=27 1
27/2=13 1
13/2=6 1
6/2=3 0
3/2=1 1
1/2=0 1
最后的写法就如同上面的红色箭头,由最后的数字向上写,因此可得到1101111010的数字罗! 这些数字的转换系统是非常重要的,因为计算机的加减乘除都是使用这些机制来处理的! 有兴趣的朋友可以再参考一下其他计算计概论的书籍中,关於1的补数/2的补数等运算方式喔!
//简单的介绍PHP中的的几个函数 //decbin — 十进制转换为二进制 echo decbin(890) //1101111010 //bindec — 二进制转换为十进制 echo bindec (‘1101111010‘) //890 //dechex — 十进制转换为十六进制 echo dechex (890) //37a //hexdec() - 十六进制转换为十进制 echo hexdec("37a") //890 //decoct — 十进制转换为八进制 echo decoct (890) //1572 //octdec — 八进制转换为十进制 echo octdec (1572) //890 //base_convert — 在任意进制之间转换数字 string base_convert ( string $number , int $frombase , int $tobase ) //number要转换的数字frombase当前进制 tobase 目标进制