0和1
0和1是计算机的基石,000111111...
本文讲讲其中的一些小细节,小知识点,2's complement, 变长编码,等等,不定期补充更多的小知识点。
大部分只有写特别的代码才会接触,而如果你掌握其中的思想,那么就能以不变应万变。
阅读完本文,就会明白
- 负数在计算机怎么被表示,为什么要用2的补码来表示?
- 为什么2的补码是取反码,然后加上1?
- 知道一个数,怎么求它的2的补码?
- 知道2的补码,怎么知道原来的数是多少?
- UTF-8是怎么理解?
- LEB128又是什么?
- 自然数和它的表示形式有什么区别?
二进制单位
bit,中文译为位,是指0或者1两个状态,是二进制中是最小的单位。
byte,即字节,有8个位。
当用16进制表示的时候,0xAB是一个byte,但是看起来是有两个数字。其中一个数字表示4bit。
一位叫bit,8位叫byte,猜猜4位叫什么?答案,是nibble。用得比较少。但是我还是喜欢它,因为它对应着16进制的时候的一个数字,比如一个字节0xAB, A或者B就是一个nibble.
进制和转换
我们大部分人熟悉的是10进制。0,1,2,3,4,5,6,7,8,9。
135代表着1*10^2 + 3 *