CPU其實只認識「0」和「1」
我們經常會聽說到某某晶片由多少百億個電晶體組成這樣的科技新聞。沒錯,CPU就是超大規模的集成電路,由數量超級多的電晶體組成,而電晶體只有「開」和「關」兩種狀態,剛好可以用「0」和「1」來代表這兩種狀態,所以CPU是採用二進位來進行運算的。
CPU是什麼?
CPU是Central Processing Unit的縮寫,中文名全稱為中央處理器。CPU的組成包括了運算邏輯、寄存器和控制部件,它可以解釋指令和進行數據運算處理。因為CPU本身就是超大規模的數字電路,只認識「0」和「1」,所以所有的指令和數據都需要由「0」和「1」組成。
二進位只有「0」和「1」怎麼運算?
所有運算邏輯我們都可以理解為「與」,「或」,「非」,「異或」四種哦
與門:多個條件中,所有條件成立才算成立,
- 1 and 1 = 1
- 1 and 0 = 0
- 0 and 0 = 0
或門:多個條件中,只要有一個條件成立,就算成立
- 1 or 0 =1
- 1 or 1 =1
- 0 or 0 =0
非門:其實就是反相
- not 1 =0
- not 0 =1
異或門:可以理解為,兩個條件不一樣,才算成立
- 1 xor 1 =0
- 1 xor 0 =1
- 0 xor 0 =0
當然還可以由這四種門延申出「與非門」,「或非門」,「與或非門」,「異或非門」等。
CPU為什麼可以運行我們的程序呢?
上面說到CPU只認識「0」和「1」,那它為什麼可以運行我們的程序呢?CPU的確不可以直接運行我們編寫的程序。但如果直接只用「0」和「1」的組合來寫程序,那是相當的煩所,也難以找到錯誤,是非常不現實的。聰明的人類為了解決這個大麻煩,就發明了彙編語言,用一些容易理解和記憶的字符來代替「0」和「1」組成的指令。
例如:
- ADD:表示邏輯加減
- MOV:代表數據傳遞
- JMP:代表跳轉
當然還是需要通過彙編器把這些用彙編語言編寫的程序翻譯為「0」和「1」組成的十六進位機器碼。
隨著計算機技術的發展,寫的程序也越來越複雜了,發現用彙編語言編寫程序的效率也相當低,然後聰明的人類又發明了我們現在用的各種高級語言,比如C,C++,PHP,Python等等,當然這些由高級語言編寫的程序就需要通過編譯器"翻譯"為CPU能夠識別的十六進位機器碼。
彙編器或者編譯器可以理解代碼與CPU溝通的「橋樑」了,通過它進行「翻譯」,CPU就可以認識代碼了。
歡迎關注@電子產品設計方案,一起享受分享與學習的樂趣!關注我,成為朋友,一起交流一起學習
- 記得點贊和評論哦!非常感謝!