計(jì)算機(jī)中補(bǔ)碼的意義
統(tǒng)一零的編碼、將符號(hào)位與其他位統(tǒng)一處理、將減法運(yùn)算轉(zhuǎn)換成加法運(yùn)算
c語(yǔ)言中有符號(hào)和無(wú)符號(hào)的區(qū)別
有符號(hào):數(shù)據(jù)的最高位為符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)
無(wú)符號(hào):數(shù)據(jù)的最高位不是符號(hào)位,而是數(shù)據(jù)的一部分
變量的聲明與定義有啥區(qū)別
聲明變量 是對(duì)變量的類型和名稱進(jìn)行說(shuō)明,不為變量開辟空間
變量定義 是根據(jù)變量類型大小為變量分配空間 變量名代表空間內(nèi)容
描述變量的命名規(guī)則
變量名由字?、數(shù)值、下劃線組成,但不能以數(shù)值開頭
#include<> 與#include ""的區(qū)別?
include<>到系統(tǒng)指定?錄尋找頭?件,#include ""先到項(xiàng)?所在?錄尋找頭?件,如果沒有找再到系 統(tǒng)指定的?錄下尋找頭文件
內(nèi)存的最?存儲(chǔ)單位以及內(nèi)存的最?計(jì)量單位分別是?
內(nèi)存的最?存儲(chǔ)單位為 ?進(jìn)制位, 內(nèi)存的最?計(jì)量單位 字節(jié)
描述gcc的編譯過(guò)程
gcc編譯過(guò)程分為4個(gè)階段:預(yù)處理、編譯、匯編、鏈接。 預(yù)處理:頭?件包含、宏替換、條件編譯、刪除注釋。 編譯:主要進(jìn)?詞法、語(yǔ)法、語(yǔ)義分析等,檢查?誤后將預(yù)處理好的?件編譯成匯編?件。 匯編:將匯編?件轉(zhuǎn)換成 ?進(jìn)制?標(biāo)?件。 鏈接:將項(xiàng)?中的各個(gè)?進(jìn)制?件+所需的庫(kù)+啟動(dòng)代碼鏈接成可執(zhí)??件。
談?wù)剶?shù)據(jù)在計(jì)算機(jī)中原碼的概念
計(jì)算機(jī)原碼就是數(shù)值本身的二進(jìn)制表現(xiàn)形式,如果是無(wú)符號(hào)數(shù),所有二進(jìn)制位都是數(shù)據(jù)位。如果是有符號(hào)數(shù),二進(jìn)制的最高位為符號(hào)位(0表示正數(shù),1表示負(fù)數(shù)),其他二進(jìn)制位為數(shù)據(jù)為
談?wù)剶?shù)據(jù)在計(jì)算機(jī)中反碼的概念
反碼是從數(shù)據(jù)的原碼得來(lái)。
如果是無(wú)符號(hào)數(shù):數(shù)據(jù)的反碼就是原碼
如果是有符號(hào)數(shù):
正數(shù):數(shù)據(jù)的反碼就是原碼
負(fù)數(shù):數(shù)據(jù)的反碼就是符號(hào)位不變,其他位按位取反
談?wù)剶?shù)據(jù)在計(jì)算機(jī)中補(bǔ)碼的概念
補(bǔ)碼是從數(shù)據(jù)的反碼得來(lái)。
如果是無(wú)符號(hào)數(shù):數(shù)據(jù)的補(bǔ)碼就是原碼
如果是有符號(hào)數(shù):
正數(shù):數(shù)據(jù)的補(bǔ)碼就是原碼
負(fù)數(shù):數(shù)據(jù)的補(bǔ)碼就是反碼+1
關(guān)鍵字struct和union的區(qū)別
關(guān)鍵字struct 代表的是結(jié)構(gòu)體,結(jié)構(gòu)體中的所有成員擁有獨(dú)立的空間
關(guān)鍵字union代表的是共用體,共用體中的所有成員共享同一份空間
關(guān)鍵字signed和unsigned的區(qū)別
關(guān)鍵字signed描述符的是有符號(hào)數(shù),如果想定義有符號(hào)變量 可以省略signed,系統(tǒng)默認(rèn)是signed
關(guān)鍵字unsigned藐視的是無(wú)符號(hào)數(shù),如果想定義無(wú)符號(hào)變量 必須加unsigned修飾
在32位平臺(tái)char short int long float double各自的字節(jié)數(shù)
char類型為1字節(jié)
short類型為2字節(jié)
int類型為4字節(jié)
long類型為4字節(jié)
float類型為4字節(jié)
double類型為8字節(jié)
談?wù)勱P(guān)鍵字register
關(guān)鍵字register修飾的變量為寄存器變量, cpu讀取寄存器變量相較于內(nèi)存的變量的書讀快些。需要注意的如果register修飾變量只是建議該變量為寄存器變量,最終是不是是由編譯器決定的
談?wù)勱P(guān)鍵字static
static修飾的變量為靜態(tài)變量,靜態(tài)變量的生命周期是整個(gè)進(jìn)程,存在于全局區(qū)(靜態(tài)存儲(chǔ)區(qū))。
如果函數(shù)中存在靜態(tài)變量,如果函數(shù)多次調(diào)用,靜態(tài)變量只會(huì)初始化一次,這種特性也是普通局部變量說(shuō)不具備的。函數(shù)結(jié)束靜態(tài)變量不會(huì)釋放,而函數(shù)中的普通局部變量會(huì)被理解釋放。
如果想讓函數(shù)內(nèi)部的變量不會(huì)隨著函數(shù)的結(jié)束而結(jié)束,可以選擇static修飾該變量
談?wù)勱P(guān)鍵字extern
關(guān)鍵字extern是聲明變量或函數(shù)具備外部特性,也是說(shuō)當(dāng)前源文件只要使用extern聲明變量或函數(shù),就可以使用其他源文件中的變量(一般為全局變量)或函數(shù)
談?wù)勱P(guān)鍵字sizeof
關(guān)鍵字sizeof是測(cè)量類型(基本類型、構(gòu)造類型)的長(zhǎng)度,比如int num;sizeo(num)的結(jié)果在32位平臺(tái)為4字節(jié),int arr[5];sizeof(arr)的結(jié)果在32位平臺(tái)為20字節(jié)
談?wù)勀銓?duì)變量初始化的理解
在定義變量的時(shí)候給變量賦值,這個(gè)動(dòng)作叫做變量的初始化。如果局部變量不初始化內(nèi)容隨機(jī)(不確定),全局變量,靜態(tài)變量不初始化內(nèi)容為0
談?wù)勛址械?'和字符串中的""的作用
'a':單引號(hào)的作用是描述a為字符,除轉(zhuǎn)義字符外,‘’只能作用一個(gè)字符,單引號(hào)還有作用就是取字符a的ASCII值
"abc":雙引號(hào)的作為是描述"abc"為字符串,如果是字符串常量,編譯器會(huì)自動(dòng)在字符串末尾添加'\0'字符作為字符串的結(jié)束標(biāo)記。雙引號(hào)另一個(gè)作用就是取字符串首元素的地址
談?wù)?\0'和'0'的區(qū)別
'\0'表示的是反斜杠0 它在計(jì)算機(jī)中存儲(chǔ)的ASCII值是0
'0'表示的是字符0,它在計(jì)算機(jī)中存儲(chǔ)的ASCII值是48
談?wù)勈M(jìn)制123轉(zhuǎn)成二進(jìn)制,八進(jìn)制,十六進(jìn)制的結(jié)果
123的二進(jìn)制結(jié)果為:0111 1011
123的八進(jìn)制結(jié)果為:0173
123的十六進(jìn)制結(jié)果為:0x7b
談?wù)劧M(jìn)制數(shù)1100 0011轉(zhuǎn)換成十進(jìn)制、八進(jìn)制、十六進(jìn)制的結(jié)果
八進(jìn)制結(jié)果為:0332
十進(jìn)制結(jié)果為:195
十六進(jìn)制結(jié)果為:0xda
談?wù)勈M(jìn)制0x123轉(zhuǎn)換成八進(jìn)制的結(jié)果
結(jié)果為:0443
談?wù)動(dòng)?jì)算機(jī)對(duì)數(shù)據(jù)的存儲(chǔ)(原碼,反碼,補(bǔ)碼)
負(fù)數(shù)在計(jì)算機(jī)中以補(bǔ)碼的形式存儲(chǔ)
非負(fù)數(shù)在計(jì)算機(jī)中以原碼的方式存儲(chǔ)
八進(jìn)制數(shù)在計(jì)算機(jī)中以原碼的方式存儲(chǔ)
十六進(jìn)制在計(jì)算機(jī)中以原碼的方式存儲(chǔ)
談?wù)動(dòng)?jì)算機(jī)對(duì)數(shù)據(jù)的讀取(原碼,反碼,補(bǔ)碼)
如果是對(duì)無(wú)符號(hào)進(jìn)行取值:
不管是有符號(hào)提取(%d %hd %ld)還是無(wú)符號(hào)提取(%u %hu %lu %o %x)都是輸出內(nèi)存原樣數(shù)據(jù)
如果是對(duì)有符號(hào)進(jìn)行取值:
系統(tǒng)會(huì)去看內(nèi)存的最高位,如果最高位為0 表明正數(shù), (有符號(hào)或無(wú)符號(hào)輸出)都是 內(nèi)存原樣 輸出
系統(tǒng)會(huì)去看內(nèi)存的最高位,如果最高位為1 表明負(fù)數(shù), 無(wú)符號(hào)輸出(%u %lu %hu %o %x)都是 內(nèi)存原樣 輸出, 有符號(hào)輸出(%d %hd %ld),將內(nèi)存數(shù)據(jù)求補(bǔ)碼(得到原碼) 輸出
談?wù)刢語(yǔ)言中自動(dòng)類型轉(zhuǎn)換的特點(diǎn)
不同類型數(shù)據(jù)之間進(jìn)行混合運(yùn)算時(shí)必然涉及到類型的轉(zhuǎn)換問(wèn)題。
自動(dòng)類型轉(zhuǎn)換:保證精度不丟失 將小的類型 轉(zhuǎn)成 大類型。
1、無(wú)符號(hào)和有符號(hào) 參加運(yùn)算 需要將有符號(hào) 轉(zhuǎn)換成無(wú)符號(hào)
2、小類型和大類型參加運(yùn)算 會(huì)將小類型轉(zhuǎn)成從大類型
3、char和short類型 只要參加運(yùn)算 都會(huì)將自己轉(zhuǎn)換成int類型
談?wù)勥壿嬤\(yùn)算符&&和||的理解
&&邏輯與:
A && B A為真 且 B為真 整個(gè)表達(dá)式結(jié)果才為真。
A && B A或B只要有一個(gè)為假 整個(gè)表達(dá)式結(jié)果才為假。
注意:邏輯與&&的短路特性:
如果A為假 整個(gè)表達(dá)式為假, 那么B的真假?zèng)Q定不了整個(gè)表達(dá)式的結(jié)果,所以不會(huì)再判斷B的真假,就叫“短路特性”
||邏輯或:
A || B A和B只要有一個(gè)為真 整個(gè)表達(dá)式結(jié)果為真。
A || B A和B同時(shí)假 整個(gè)表達(dá)式結(jié)果為假。
注意邏輯或||的短路特性:
如果A為真 整個(gè)表達(dá)式為真, 那么B的真假?zèng)Q定不了整個(gè)表達(dá)式的結(jié)果,所以不會(huì)再判斷B的真假,就叫“短路特性”
談?wù)勎贿\(yùn)算符&、|、^的應(yīng)用場(chǎng)景
&:一般用于將指定位清0
|:一般用于將指定位置1
^:一般用于將指定位翻轉(zhuǎn)
談?wù)勀銓?duì)邏輯右移和算術(shù)右移的區(qū)別
算術(shù)右移、邏輯右移 都是編譯器決定。如果是正數(shù)算術(shù)右移,邏輯右移沒有區(qū)別。如果是負(fù)數(shù)。
負(fù)數(shù):右邊丟棄 左邊補(bǔ)0(邏輯右移)
負(fù)數(shù):右邊丟棄 左邊補(bǔ)1(算術(shù)右移)
更多關(guān)于物聯(lián)網(wǎng)培訓(xùn)的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國(guó)內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢(mèng)想。