編譯器如何把數字轉為二進位制的?

時間 2021-12-29 17:01:45

1樓:

我來說點另類的。不涉及專業知識。只是編譯器常識。

首先,二進位制不要編譯器轉換,其實在你敲鍵盤的一剎那,轉換就已經完成了。而機器為了人可見,反而要把這些轉換到螢幕上顯示。人接收到這個字串後,按思路再寫下乙個字串。

這樣互動就完成了整個所謂編寫程式。這是人與機器的溝通方式。

但這個過程完成後,計算機是不知道你要表達的是什麼的。這就像畫畫一樣,你胡亂在紙上畫一通,別人不知道你畫的是什麼。同樣的,你的語句有條理組織,大概就有形象出來了。

這時,這個條理的識別就要用編譯器去識別。這裡的識別是一種表達組織或結構的轉換,而不是轉為二進位制。之所以要結構轉換,還是因為通常人的語言是非常不規則的。

而現代計算機只能處理遞迴啊,迴圈啊,順序啊之類形式語法的語言,無法處理詩詞歌賦喔(當然我認為其實它連這種形式也理解不了)。因此需要人給編譯器定規則,然後再按自己定的規則寫程式,再由編譯器輔助把它變換成所謂更簡單的線性語法,這種最簡單的形式,可以被任何硬體直接處理。

應該說,編譯器是乙個數學函式,輸入是二進位制,輸出還是二進位制。

常識知道了,下面就可以說了,編譯器是乙個輔助自動化工具,把輸入的字串變換為機器能理解的二進位制形式。怎麼變,人怎麼理解的,模範人就可以了。

2樓:譚敘

第乙個問題已經有人答過了。我就補充一下第二個問題吧。

詞法分析一般用正規表示式定義出所有的關鍵字和有意義的符號做字串匹配,可以看看詞法分析工具lex是怎麼用的。詞法分析的輸出是各種型別的token,用來作為語法分析的輸入。

二進位制怎麼直接轉為八進位制?

辰璟 把乙個二進位制數分成三個一組,注意是重右往左分,不夠的數用零補,例如 1010111001 010 111,然後將每一組數用十進位制轉換,此處是二用二進位制轉換十進位制1 2 7,所以八進位制的數為127原理我解釋不清楚你自己看別人的吧 啪嗒星 通過高位補0把二進位制數字數補成3的整數倍,然後...

Mac下有二進位制檢視 編輯器嗎?

William Herry Mac 下檢視可以用xxd,tmp xxd b helloworld.txt0000000 01101000 01100101 01101100 01101100 01101111 00100000 hello 0000006 01110111 01101111 0111...

原始碼編譯真的比二進位制安裝 執行效率更高麼?

exiledkingcc 並不是。很多人編譯原始碼都不看一下readme,直接無腦make install。這樣編出來的執行效率很可能還比不上apt install的。 不一定。對於不想折騰構建系統引數,用預設命令編譯的普通使用者來說,要看構建系統是否預設針對本機平台開啟指令集優化。況且相當一部分軟...