如果灯泡凉了,就表示是1;灯泡暗了,就表示是0.如果是十进制的数字5,就只需要用3个灯泡就可以表示出来,从右到左,分别是 亮--暗--亮.(1*2^0+0*2^1+1^2^2=5)
每个灯泡用代码的通俗语言来讲,就是bit(位).一般把8个bit组成一组,称为字节"byte"
接下来会有两个很有意思的问题.
1.为什么要用8位作为一组,而不是4位/16位....?
2.我们用3个灯泡来表示5,那么表示多个不同的数字的话,我们应该怎么区分不同灯泡所在的区域?
说到第一点,就不得不提ASCII编码表,ASCII表由美国人创立,规定了常用的字母/数字/符号与灯泡之间的关系.刚刚这些重要常用的符号就有128个,也就是说我要区分128个符号,就得使用128种不同灯泡亮暗排列方式进行排列.理论上7个灯泡排列可以表示256种方式,但早期不需要用那么多的符号.但第8个灯泡用作奇偶校验位.奇偶校验的原理就是在最高位指示该字节中1的奇偶性.
如果传输过程中,字节中1的数量发生变化,就会破坏字节中1总数的奇偶性.但这种方法有个缺点,就是这些影响是相互抵消.导致最后的校验还是没有变化.所以这种方案的结果就是慢慢落后了.有些国家自己弄了套编码,把最高位也用上了,这样8个灯泡就能表示256种符号.但对于我们大中华的文字符号来说,这些是远远不够的,所以后面又发展了用32bit来表示符号.
但历史就是历史,历史很难推翻重来,早期计算机内存珍贵,没有考虑到后面的情况,所以这套标准就被沿用了下来.
说到第二点,就得涉及到cpu如何寻址?简单来说,cpu寻址的方式是通过矩阵的方式对内存进行编码,有点像军队矩阵的方式.那么如何确定军队矩阵中的某一个人呢?就是通过行列的方式,例如行七列8就是张三.行七列八就是位置信息.我们先把根据内存的大小,做好各种坑位的位置信息,一旦需要记录内存,就找到对应的位置,进行存储记录.
11-14
8万+
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
05-26
3173
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)