c語言機器碼
⑴ 機器語言 匯編語言 偽代碼 c語言分別是指什麼
計算機語言是人們描述計算過程即程序的規范書寫語言。程序是計算機處理對象和計算規則的描述。語言的基礎是一組記號和規則,根據規則由記號構成記號串的總體就是語言。
人類發明了計算機,需要與計算機「交流」,即寫入和讀出,這樣必須使用一種語言讓人類與機器能夠交流,就誕生了機器語言。
機器語言是機器指令的集合。機器指令展開來講就是一台機器可以正確執行的命令。每種微處理器,可以識別的每一條指令稱為機器指令。每一種處理器都有自己可以識別的一整套指令,稱為指令集。由於硬體設計和內部結構的不同,就需要用不同的電平脈沖來控制,使它工作。所以每一種微處理器都有自己的機器指令集,也就是機器語言。機器語言是計算機可以識別並運行的二進制代碼。
匯編語言是將二進制的機器碼通過助記符的方式讓人可以更方便的編寫並檢查的低級語言。匯編語言接近機器語言,可以看做是機器語言的另一種形式,計算機在運行時也需要將其變為機器語言的二進制才可運行。匯編語言是機器語言的助記符。
偽代碼是一種演算法描述語言。它不是一種現實存在的編程語言。使用為代碼的目的是為了使被描述的演算法可以容易地以任何一種編程語言實現。它可能綜合使用多種編程語言中語法、保留字,甚至會用到自然語言。 因此,偽代碼必須結構清晰,代碼簡單,可讀性好,並且類似自然語言。計算機科學在教學中通常使用偽代碼,以使得所有的程序員都能理解。
C語言之所以命名為C,是因為 C語言源自Ken Thompson發明的B語言,而 B語言則源自BCPL語言。1972年,美國貝爾實驗室的 D.M.Ritchie 在B語言的基礎上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。機器語言和匯編語言都不具有移植性,而C語言程序則可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的C語言編譯器和庫,然後將C源代碼編譯、連接成目標二進制文件之後即可運行。
⑵ c語言是計算機的什麼語言是高級還是低級
c語言是計算機的高級語言。
高級語言相對於機器語言(machine language,是一種指令集的體系。這種指令集,稱機器碼(machine code),是電腦的CPU可直接解讀的數據)而言。
是高度封裝了的編程語言,與低級語言相對。它是以人類的日常語言為基礎的一種編程語言,使用一般人易於接受的文字來表示(例如漢字、不規則英文或其他外語),從而使程序編寫員編寫更容易,亦有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。
(2)c語言機器碼擴展閱讀:
高級語言的好處:
1、高級語言接近演算法語言,易學、易掌握,一般工程技術人員只要幾周時間的培訓就可以勝任程序員的工作;
2、高級語言為程序員提供了結構化程序設計的環境和工具,使得設計出來的程序可讀性好,可維護性強,可靠性高;
3、高級語言遠離機器語言,與具體的計算機硬體關系不大,因而所寫出來的程序可移植性好,重用率高.
C語言的特點:
1、C語言是一門面向過程的計算機編程語言,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
2、C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%~20%。因此,C語言可以編寫系統軟體。
⑶ C語言中已知機器碼如何求原碼
數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進制,而在日常生活中人們使用的是十進制,"正如亞里士多德早就指出的那樣,今天十進制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.盡管在歷史上手指計數(5,10進制)的實踐要比二或三進制計數出現的晚."(摘自<<數學發展史>>有空大家可以看看哦~,很有意思的).為了能方便的與二進制轉換,就使用了十六進制(2 4)和八進制(23).下面進入正題. 數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的范圍為 (-127~-0 +0~127)共256個. 有了數值的表示方法就可以對數進行算術運算.但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時候就出現了問題,如下: 假設字長為8bits ( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10 (00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 顯然不正確. 因為在兩個整數的加法運算中是沒有問題的,於是就發現問題出現在帶符號位的負數身上,對除符號位外的其餘各位逐位取反就產生了反碼.反碼的取值空間和原碼相同且一一對應. 下面是反碼的減法運算: ( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10 (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有問題. ( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10 (00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正確 問題出現在(+0)和(-0)上,在人們的計算概念中零是沒有正負之分的.(印度人首先將零作為標記並放入運算之中,包含有零號的印度數學和十進制計數對人類文明的貢獻極大). 於是就引入了補碼概念. 負數的補碼就是對反碼加一,而正數不變,正數的原碼反碼補碼是一樣的.在補碼中用(-128)代替了(-0),所以補碼的表示範圍為: (-128~0~127)共256個. 注意:(-128)沒有相對應的原碼和反碼, (-128) = (10000000) 補碼的加減運算如下: ( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10 (00000001)補 + (11111111)補 = (00000000)補 = ( 0 ) 正確 ( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10 (00000001) 補+ (11111110) 補= (11111111)補 = ( -1 ) 正確 所以補碼的設計目的是: ⑴使符號位能與有效值部分一起參加運算,從而簡化運算規則. ⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計 所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼。
⑷ 我明明白白是熟悉了C語言了,但為什麼看那些單片機的實際指令程序有很多是大寫的看不明的字母,請各位指點
C語言是高級語言,需要用編譯器把c代碼編譯為機器碼之後才能運行,c語言自己是不能執行的。而機器只能運行機器碼。
機器碼就是原始指令。為了方便編程,這些原始指令都有一些指令名,就是你說的那種「大寫字母」。這種用指令編程的語言,叫「匯編語言」
由於一般單片機都沒有定製的C語言編譯器,所以開發程序時一般都是直接採用匯編語言。
匯編語言是很底層的開發技術,只是二進制機器碼的一個簡單包裝,在匯編語言中,你需要自己處理寄存器、堆棧、內存、中斷、dma什麼的,非常繁瑣。
c語言就是為了簡化開發,不必用匯編語言,而設計的。但不一定所有的單片機都有編譯器。
而且,由於「匯編語言」是底層技術,因此能實現的功能也最強大,僅限於程序員的個人能力。
⑸ C語言是高級語言嗎
C語言是高級語言。
計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
1、機器語言(machine language)是一種指令集的體系。這種指令集,稱機器碼(machine code),是電腦的CPU可直接解讀的數據。
2、匯編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在匯編語言中,用助記符(Mnemonics)代替機器指令的操作碼,用地址符號(Symbol)或標號(Label)代替指令或操作數的地址。在不同的設備中,匯編語言對應著不同的機器語言指令集,通過匯編過程轉換成機器指令。普遍地說,特定的匯編語言和特定的機器語言指令集是一一對應的,不同平台之間不可直接移植。
3、高級語言主要是相對於匯編語言而言的,是較接近自然語言和數學公式的編程,基本脫離了機器的硬體系統,用人們更易理解的方式編寫程序。編寫的程序稱之為源程序。
除了機器語言和匯編語言外的所有編程語言,都屬於高級語言。 所以C語言也是高級語言的一種。
⑹ 請問c語言的源程序被編譯後的代碼是機器碼嗎
首先語言和被編譯成的代碼沒有直接關系。有把Java編譯成機器碼的編譯器也有把C語言編譯成Java位元組碼的編譯器。
機器碼只是CPU直接認讀的編碼,不等於和硬體打交道的。操作硬體是你通過程序操作CPU做到的。操作系統只不過是別人寫的程序而已,說到底還是程序。