笔记|二进制
路上听了极客时间的数学课,简单做点笔记
什么是二进制?
我们先来看十进制,十进制本质上使用10作为基数。
二进制就是以2作为基数,即二进制的数位就是2^n的形式
我们以 110101 为例子,看看在十进制里,它是谁
二进制为什么使用二进制?
计算机之所以使用二进制和现代计算机系统的硬件实现有关。组成计算机系统的逻辑电路通常只有两种状态,即开关的接通和断开。由于每位数据只有断开和接通两种状态,所以几遍系统受到一定程度的干扰时,仍然能够可靠地分辨出数字是“0”还是“1”。如果使用十进制,那就要设计10种状态的电路,情况会变得很复杂,判断状态的时候就容易出错。
二进制的位操作
在了解了二进制后,我们再看看计算机语言中针对二进制的位操作(位运算)。即直接对内存中的二进制位进行操作。常见的有向左移位和向右移位的移位操作,以及“或”、“与”、“异或”的逻辑操作。
1.向左移位
比如110101向左移一位,即在末尾添加一位0,因此110101就变成了1101010。
在数字溢出(位数超过系统指定的位数)情况下,需要将溢出的位数去除。
此外,我们还能看到此时如果把1101010换算成十进制,就是106,对比先前的53。我们得到一个结论:二进制左移一位,其实就是将数字翻倍。
2.向右移位
比如110101向右移一位,即去除末尾的那一位,因此110101就变成了011010。
此外,我们还能看到此时如果把011010换算成十进制,就是26,对比先前的53。我们得到一个结论:二进制左移一位,其实就是将数字除以2并求整数商的操作。
3.位的“或”
从右向左,对相同位置的数字:参与操作的位中只要有一个位是1,结果就为1(只要有真就为真)
4.位的“与”
从右向左,对相同位置的数字:参与操作的位中必须全部为1,结果才为1(都是真才为真)
与5.位的“异或”
从右向左,对相同位置的数字:如果参与操作的位相同,那么最终结果就为 0(假),否则为1(真)(不同才为真)
以上为黄老师课的笔记