路上聽了極客時間的數學課,簡單做點筆記
什麼是二進制?
我們先來看十進制,十進制本質上使用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(真)(不同才爲真)
以上爲黃老師課的筆記