二進位制,單看名字,就可以聯想到我們從小就學習的十進位制,十進位制是滿10進製,用數字0-9記數的計數方式,那麼二進位制就是滿2進製的計數方式了,滿2進製,只有1和0兩個數字進行記數。總的來說,二進位制和十進位制都屬於數字進製的一部分。
數字進製是一種記數方式,利用這種記數的方法,我們可以使用有限的數字符號來表示所有的數值。
面對不同的使用場景,我們會根據便利性來使用不同的進製。比如我們常用的10進製、計算機領域使用的2進製。而2進製和10進製中的2和10都是稱為對應進製裡面的基數。
基數,顧名思義有一種基礎、基石的意思。若乙個進製的基數是2,就是2進製;若乙個進製的基數是10,就是10進製;若乙個進製的基數是n,那麼就是n進製。
再來看看進製計數方式:
(1)10進製:滿10進1位,如有乙個數685,
寫成算式就是:6x100+8x10+5x1=685。
其中,我們從0位開始,10的0位就是10的0次方,為1,使用0-9的數字,我們可以乘出5,但是無法計算出剩餘的680,這時需要我們進一位到10的1次方,為10,我們可以得出80,以此類推,我們使用了10的2次方,100,得出了600。我們把所得都加起來,5+80+600,就可以得出我們設定的數字685了,寫成算術式:
685 = 6x
(2)2進製:滿2進1位,就像上面的數字685,
寫成算式就是:1x512+0x256+1x128+0x64+1x32+0x16+1x8+1x4+0x2+1x1=685
遇上同理,從0位開始,2的0次方為1,使用1和0,只能得出1,剩餘的684得繼續通過進製來獲得滿足的數字【這種方法後面會說到】,寫成算數式:
685 = 1x
由上結果,我們可以知道n進製的進製計數方式,比如有b個數字,如果a3、a2、a1、a0是其中四個數字,我們可以寫成這種形式:
a3a2a1a0 = a3x
目前我們常見以及常用的進製有:10進製、2進製(計算機領域)、8進製(計算機領域)、16進製制(計算機領域)、6進製(骰子)、12進製(一打12個)
如前面所說,2進製只用1和0兩個數字進行記數,在計算機領域,由於計算機大部分是由積體電路組成,而電路的狀態總的來說只有兩種狀態:開和關,正好可以對應1和0,所以我們可以根據這種特性來對電路進行有目的性的驅動,從而實現某個功能,這也是現代的計算機和依賴計算機的裝置都使用二進位制的原因。
1、二進位制的四則運算規則十分簡單,滿1進製,有利於簡化計算機內部結構,提高運算速度。
(1)加: 0 + 0 = 0 ,1 + 0 = 1 ,0 + 1 = 1 ,1 + 1 = 10
(2)減: 0 - 0 = 0 ,1 - 0 = 1 ,1 - 1 = 0 ,10 - 1 = 1
(3)乘: 0 x 0 = 0 ,0 x 1 = 0 ,1 x 0 = 0 ,1 x 1 = 1
(4)除: 0 / 1 = 0 ,1 / 1 = 1
2、使用二進位制表示資料,抗干擾能力強,可靠性高,因為每位資料只有高和低兩個狀態,當資料受到一定程度的干擾,我們仍能可靠地分辨出數字是高還是低;
3、邏輯代數是邏輯運算的理論依據,二進位制只有0和1兩個數碼,正好與邏輯代數中的和「false」和「true」相吻合。
4、二進位制與十進位制之間的轉換簡單,下面講下10十進位制的數是如何轉換為二進位制的,如上面的685:
如上圖所示,我們對685進行不斷的對2取餘,我的箭頭所指表示前乙個被除數的餘數,所以最後的1也要對2取餘,直到為0,然後從最下面開始按順序往上排列,得出來的就是685轉換為2進製後對應的值:
685(10) = 1010101101(2) 【括號內表示的為進製】
那麼2進製的數又是如何轉換為10進製呢?咱們來看2進製的位數,如上 1010101101 ,總共有10位,我們從右往左,以0位開始,對應2進製的每乙個位數(剛才所得的各個餘數)進行乘積,再相加,寫出來就是:
1010101101(2) =1x0x1x0x1x0x1x1x0x1x= 685(10)
也就是前面那個公式啦~
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
再次理解二進位制
我們目前接觸的進製有很多,比如說生活中最常用的十進位制 十二進位制 六十進位制 365進製等等,在學習計算機的過程中又接觸了二進位制 十六進製制 八進位制 通常我們是將二進位制 十進位制和十六進製制放在一起進行比較學習的。學習二進位制是因為計算機只識別0和1,學習十進位制是因為人用的最多的也是最容易...
快速冪(二進位制理解)
已知底數a,指數b,取模值mod。求ans a b mod 二 樸素演算法 已知可跳過 ans 1,迴圈從 i 到 b 每次將 ans ans a mo 時間複雜度o b void power int a,int b,int mod 時間複雜度o log2b 最近看團隊老師推薦的 演算法競賽 從入門...