进制转换基础
字节,unicode,进制转换
计算机存储单元, 一个字节由8位2进制数表示, 每个2进制数表示0或1, 所以8位2进制数可以表示的不同数字一共是 2^8 = 256个, 分别对应(0-255).
unicode编码是2字节16位一个字符(中英文都是), 2字节一共是2^16 = 65536种数字, 对应(0-65535)
虽然unicode是2进制存储, 但字符编码一般却用16进制表示, 16进制转2进制基础看上面链接, 简单说就是一个16进制字符代表4位2进制数字, 所以unicode编码一般这样表示
0x45fc
,其中0x
是16进制标识符,4,5,f,c
4个数字分别表示一个4位的2进制数, 怎么转换看上面转换基础
颜色编码,进制转换
颜色编码有两种形式 rgb(233,233,233) 与#D3C455, 其中第一种的三个数字分别对应红,绿,蓝, 三原色的点亮程度, 取值范围是0-255,0为完全不亮,255为该颜色充分点亮
所以rgb(0,0,0)对应黑屏幕,因为所有颜色都不亮起来, 所以rgb(255,255,255)为白色,因为所有颜色都亮起来了,屏幕就白了
根据刚才的经验我们知道0-255可以用8位2进制数保存,我们又知道8位2进制数可以 -> 2个4位2进制数 -> 2个16进制数字.
于是以00为初始, FF(1516^1 + 1516^0=255)为最终可以表示一个三原色的饱和程度, 于是有了
#D3C455
这种16进制表示法,每两个16进制数代表一个三原色的饱和程度,从rgb()方式向#16进制方式实现转换.
一道面试题
border中最后一个参数表示颜色,它是16进制,白色为(#FFF),那(#F60)怎么推算是什么颜色?
- 首先#FFF = #FFFFFF, #F60=#FF6600, 相当于蓝色全暗掉了, 绿色从全亮变成了只有不到一半亮, 那么我们要的颜色应该是( 红 + 不怎么绿的绿 )
好吧, 就是这种基佬橙...