2015-11-09 87 views
0

十六進制編輯器的用途是什麼?它是像C還是Python這樣的編程語言,我如何學會編程?另外,有沒有什麼方法可以用二進制代碼?我讀了一篇關於史蒂夫喬布斯的自傳,有一次我想他的一個同事不得不用二進制編寫一個程序,而且學習如何做似乎是一件非常酷的事情。我沒有解決現實世界的問題,我只是好奇而已。我對計算機有一個非常基本的理解,所以假裝像你一樣向五年級的學生解釋這一點。什麼是十六進制編輯器?

+0

它只是讓你直接編輯文件的數字內容。因此,例如,如果它是一個文本文件,那麼您正在查看文本的ASCII碼,而不是文本本身。只是谷歌「十六進制編輯器」。 – lurker

回答

0

我們使用的大多數編程語言都處於較高水平,因爲在機器能夠真正識別它們之前,它們被翻譯了好幾次。你的CPU實際上是執行非常簡單的指令,用0和1編碼,比如add,logical或者從存儲器地址加載一個數字到寄存器(所以我們可以添加或操作數值)等。

那麼這個翻譯如何工作?那麼假設你已經用C編寫了一個簡單的hello世界程序。它需要被翻譯成機器代碼,稱爲編譯過程。在此階段,您的代碼將根據您的特定CPU(程序集)轉換爲中間語言。這應該是人類可讀的機器指令(前面提到的添加,加載等)。然後機器指令被進一步轉換爲0和1。

例如,在MIPS CPU架構添加的樣子:

0000 0000 0010 0010 0001 1000 0010 0000 

這基本上說,添加存儲在寄存器1和2的值,並把結果在寄存器3

事情很長,所以我們通常不是以二進制編寫,而是以十六進制編寫。四0和1的壓縮成一個數字,我們得到:

00 22 19 20 

所以,當你在一個十六進制編輯器打開一個可執行文件,所有這些值包括例如像上面的說明,靜態數據,圖書館和。當你編輯這些值時,假設你知道你在做什麼,你可以改變軟件的行爲。

但是,你不想用二進制編寫程序。這是非常痛苦的。我建議看看彙編以及CPU的工作方式,如果你更感興趣。

一些優點你可能會在機器內的代碼比編寫C:

  1. 你得到你可以做什麼更多的靈活性。您可以在整個程序的基礎上管理您的資源,以便優化一切。飛機上的一些時間敏感儀器是用匯編編寫的。

  2. 您可以全面瞭解程序的每個部分是如何工作的。

而缺點:

  1. 這是非常難以保持這麼多的事情記一次。這是非常容易出錯的,而且很難調試。
  2. 這是非常耗時的。由於您需要查看操作代碼翻譯,因此在彙編中您的寫作生產率約爲十分之一,機器代碼更差。
  3. 它不是平臺獨立的。機器代碼是每個CPU架構,所以你的Windows代碼(x86架構)不能在Mac上工作,而C程序可以重新編譯並立即運行。
0

大多數可執行文件是二進制文件在系統中。檢查二進制內容有時可能很重要,但只用0和1讀取大文件是一項非常繁瑣的任務。這個想法是,四個0和1的每一個可以由一個十六進制符號表示:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E F.十六進制編輯器將有助於閱讀任何類型的二進制內容(例如,網絡上的文件或tcp幀)。但請注意,即使在十六進制中,您也需要很好的計算機知識來理解文件內容。

+0

但是它對C語言有什麼優勢? –

+0

人類不用二進制編寫計算機程序,他們使用C,Java,Python或彙編語言。二進制不是一種編程語言。十六進制編輯器的目的只是爲了更容易地分析二進制內容,有時可以稍微修改它,就是這樣 –