編譯器轉換
隱式類型轉換所謂隱式類型轉換就是在編譯時由編譯程序按照一定規則自動完成,而不需人為干預。因此,在表達式中如果有不同類型的數據參與同一運算時,編譯器就在編譯時自動按照規定的規則將其轉換為相同的數據類型。
C語言規定的轉換規則是由低級向高級轉換。
B. 如何用雙2-4線解碼器轉換為3-8線解碼器電路圖怎麼設計
將雙2-4解碼器進行級聯,即使用最高位作為兩片2-4解碼器的片選信號,將剩餘位作為解碼器片內地址線,就可以轉換成3-8解碼器。
設計方向
將雙2-4解碼器級聯為3-8解碼器
設計思路
由於解碼器解碼輸出與輸入對應,輸入端位000~111對應選擇輸出端的Q0~Q7,故可以根據輸入端最高位將3-8線解碼器分割為低4位和高4位,結合邏輯地址分段的思路使用兩個2-4線解碼器的表示對應的Q0~Q3和Q4~Q7。
由於Q0~Q3和Q4~Q7除了輸入端的最高位不同一一對應,因此可以輸入端最高位控制2-4解碼器的使能端,將剩餘的輸入作為片內地址去控制有效解碼器的輸出。
電路原理
設計分析
該設計通過輸入端最高位作為片選信號,將輸入端最低位和第二位作為片內地址線選擇片內輸出,實現兩個2-4解碼器的級聯形成3-8解碼器。
注意事項
解碼器根據其內部結構不同輸出端和使能端均有高電平有效和低電平有效兩種,實際使用應根據相關技術手冊調整,即調整反相器的位置和輸出的默認電平,常使用上拉電阻和下拉電阻。
C. 在java編程中,Java編譯器會將java程序轉換為什麼
A
一般java文件編譯過後會成為.
class文件
,這個.class文件就是
位元組碼
文件,若干個位元組碼文件構成了
Java程序
D. 哪兩種編程語言需要使用編譯器將程序轉換為可執行代碼
基本上所有編程語言都需要編譯器
來將代碼轉換為機器碼(一堆0和1)
這樣我們才能讓cpu執行
最具代表性的我個人認為是匯編語言
E. java中一個表達式有float和long兩種類型的變數,編譯器是怎麼轉換,進行運算的
float是比long強的類型.long會被自動轉換為float.而float轉化為long需要進行強制類型轉化..
下面這段代碼體現了float和long之間的互相轉化時出現的問題..
public static void main(String[] args) {
// TODO Auto-generated method stub
float f = 24l + 2.2f;
// long l = 2144l + 2.2f;
// Type mismatch: cannot convert from float to long
long l = 128l;
f = l + 2.2f;
// l = f + 14L;
// Type mismatch: cannot convert from float to long
}
F. 先生們,女神們,快來看啊…… 請問下,c語言通過編譯器轉換成匯編語言,那電腦是怎樣聽懂匯編語言呢說
1、比如彈出光碟機,學過高中物理應該知道電生磁,實際上就是個發動機,將電能轉換成機械能。
2、要弄懂這個問題,舉個 ia32 windows平台上的例子,我也只能大體上說一下,具體的細節在這里是說不完的。。以c++源碼
int main()
{
int a = 2;為例
}
經過編譯器,會生成匯編代碼:mov dword ptr ss:[esp-4], 2,匯編指令經過匯編器(即將匯編指令轉換成機器碼的程序)即C74424FC02000000這樣的機器碼,匯編指令生成的機器碼是有一定的指令格式的,你可以參考intel開發手冊,第一部分就有intel指令的格式。然後鏈接器根據生成的二進制文件,按照pe結構,生成一個exe文件。當你雙擊運行這個文件的時候,windows的pe loader 程序會將exe文件內存文件映射到虛擬內存中(即windows上的頁文件,也就是c盤中的pagefile文件),CPU的內部有一個震盪器(震盪器的原理很簡單,平時看到的電鈴就是這個原理),震盪器不斷的發送脈沖,每一次當脈沖為1時,CPU就會從內存中讀取指令,脈沖為1的時候,會根據內存中的地址匯流排,發送要取指的內存地址,這時候有一個解碼器,所謂的解碼器就是一種開關電路,比如有三個開關,當2個斷開1個閉合時,就表示成001,也就是取第一個單元的數據,這樣CPU將指令取得後,它會對指令進行解碼,解碼完後設置電路開關,然後將相應的數據放入到運算器中,運算器的實現,最早就是一個加法器。然後就是指令執行,執行完了,繼續取下一條指令。這就是存儲程序原理。
沒事歡迎來0x30網路貼吧,分享交流更多計算機編程知識。
G. 誰能詳細說明一下編譯器自動調用類型構造函數進行類型轉換的原理
StrCell sc = dc + dc; 這條語句執行時調用StrCell的構造函數,與StrCell sc(dc + dc);相同。
它們都需要這樣的構造函數:StrCell(const DblCell &dc);
類型轉換是把一種類型轉換為另一種不同的類型,而源代碼中的構造函數接受的就是DblCell參數,所以StrCell sc = dc + dc;嚴格來說不算是類型轉換。
假如構造函數是StrCell(const StrCell &dc); 這個時候就需要把DblCell轉換為StrCell,此時存在一個類型轉換。
因為要把DblCell轉換為StrCell,所以需要在類DblCell中定義一個類型轉換運算符:operator StrCell(); 它的作用就是把DblCell轉換為StrCell,這個函數是成員函數,不需要參數,也不需要在函數聲明時顯式寫出返回值,當然該函數仍然要返回一個值。
有了這個運算符後,編譯會對StrCell sc = dc + dc;做擴展:
1. 生成臨時變數var1保存dc + dc的結果。
2. 調用var1.StrCell()這個運算符函數把var1轉換為類型StrCell,運算符函數的返回值將成為一個臨時變數var2。
3. 調用sc的構造函數,並傳入var2。
4. 結束。
H. 如何用編譯器將自己的源代碼轉換成目標代碼
我們使用編譯器將自己的源代碼轉換成目標代碼,
使用鏈接器將我們的目標代碼鏈接成一個可執行程序。另外,
我們使用一些程序在計算機中輸入源代碼文本並且編輯它。這些是最初的和最重要的工具,
它們構成程序員的工具集合或「程序開發環境」。
如果你使用的是命令行窗口,
就像很多專業程序員所做的那樣,
你將不得不自己來編寫編譯和鏈接命令。如果你使用IDE(「互動式開發環境」或「集成式開發環境」),
就像很多程序員所做的那樣,
簡單地點擊正確按鈕就可以完成這個工作。附錄C介紹了如何在你的C++實現中編譯和鏈接。
IDE通常包括一個具有有用特性的編輯器,
例如用不同顏色的代碼來區分你的源代碼中的注釋、
關鍵字和其他部分,
以及其他幫助你來調試代碼、
編譯和運行代碼的功能。調試是發現程序中的錯誤和排除錯誤的活動,
你在前進的道路上會聽到很多有關它的內容。
我們使用微軟的Visual
C++作?喑炭
⒒肪呈道
H綣
頤羌虻サ廝怠氨嘁肫鰲被蚴恰癐DE」的某些部分,
那就是所指Visual
C++系統。但是,
你可以使用一些提供最新的、
符合標準的C++實現的系統。我們所說的大多數內容(經過微小的修改)對所有的C++實現都將是正確的,
並且其代碼可以在任何地方運行。在工作中,
我們使用幾種不同的實現。
I. 如何用編譯器將自己的源代碼轉換成目標代碼
我們使用編譯器將自己的源代碼轉換成目標代碼, 使用鏈接器將我們的目標代碼鏈接成一個可執行程序。另外, 我們使用一些程序在計算機中輸入源代碼文本並且編輯它。這些是最初的和最重要的工具, 它們構成程序員的工具集合或「程序開發環境」。 如果你使用的是命令行窗口, 就像很多專業程序員所做的那樣, 你將不得不自己來編寫編譯和鏈接命令。如果你使用IDE(「互動式開發環境」或「集成式開發環境」), 就像很多程序員所做的那樣, 簡單地點擊正確按鈕就可以完成這個工作。附錄C介紹了如何在你的C++實現中編譯和鏈接。 IDE通常包括一個具有有用特性的編輯器, 例如用不同顏色的代碼來區分你的源代碼中的注釋、 關鍵字和其他部分, 以及其他幫助你來調試代碼、 編譯和運行代碼的功能。調試是發現程序中的錯誤和排除錯誤的活動, 你在前進的道路上會聽到很多有關它的內容。 我們使用微軟的Visual C++作?喑炭 ⒒肪呈道 H綣 頤羌虻サ廝怠氨嘁肫鰲被蚴恰癐DE」的某些部分, 那就是所指Visual C++系統。但是, 你可以使用一些提供最新的、 符合標準的C++實現的系統。我們所說的大多數內容(經過微小的修改)對所有的C++實現都將是正確的, 並且其代碼可以在任何地方運行。在工作中, 我們使用幾種不同的實現。
J. 編譯器是什麼
簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言,而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。
對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。
編譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器語言)的翻譯過程。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。
典型的編譯器輸出是由包含入口點的名字和地址, 以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的EXE,
所以我們電腦上的文件都是經過編譯後的文件。