一家浇、原反補(bǔ)碼
- 原碼:
原碼就是符號(hào)位加上真值的絕對(duì)值, 即用第一位表示符號(hào)(正負(fù)套媚,負(fù)數(shù)為1柏蘑,正數(shù)為0), 其余位表示值.原碼是人腦最容易理解和計(jì)算的表示方式. - 反碼:
正數(shù)的反碼是其本身負(fù)數(shù)的反碼是在其原碼的基礎(chǔ)上, 符號(hào)位不變,其余各個(gè)位取反. - 補(bǔ)碼:
正數(shù)的補(bǔ)碼就是其本身負(fù)數(shù)的補(bǔ)碼是在其原碼的基礎(chǔ)上, 符號(hào)位不變, 其余各位取反, 最后+1. (即在反碼的基礎(chǔ)上+1)
注意:正數(shù)的原反補(bǔ)碼都是自身
出現(xiàn)過程:
原碼是人腦能直接識(shí)別并用于計(jì)算的表示方式媳板,我們?cè)谟?jì)算數(shù)據(jù)的時(shí)候回根據(jù)符號(hào)位去計(jì)算數(shù)據(jù)(符號(hào)位不計(jì)入計(jì)算),但是計(jì)算機(jī)進(jìn)行加減乘除基本運(yùn)算的時(shí)候泉哈,如果要去辨別符號(hào)位的話就變得很復(fù)雜了蛉幸,而這個(gè)時(shí)候人們就想出了將符號(hào)位也參與運(yùn)算,這個(gè)時(shí)候就吹出現(xiàn)了反碼丛晦。我們知道a-b = a+(-b)這個(gè)時(shí)候就將減法改變成加法來運(yùn)算奕纫,從而減少了計(jì)算機(jī)去辨別負(fù)數(shù)的符號(hào)位,解決了減法的問題烫沙,但是出現(xiàn)了問題—–>0 我們計(jì)算得到結(jié)果的時(shí)候首位仍為符號(hào)位匹层,如果該數(shù)為0的話 反碼中會(huì)出現(xiàn) +0 -0的區(qū)別,但是我們都知道0帶符號(hào)是沒有意義的锌蓄,這個(gè)時(shí)候就出現(xiàn)了補(bǔ)碼升筏。計(jì)算機(jī)中數(shù)據(jù)就是以補(bǔ)碼形式存在的。
二煤率、隱式轉(zhuǎn)換
隱式類型轉(zhuǎn)換分三種仰冠,即算術(shù)轉(zhuǎn)換、賦值轉(zhuǎn)換和輸出轉(zhuǎn)換蝶糯。
- 算數(shù)轉(zhuǎn)換:算術(shù)運(yùn)算(加洋只、減、乘昼捍、除识虚、取余以及符號(hào)運(yùn)算)時(shí),不同類型數(shù)招必須轉(zhuǎn)換成同 一類型的數(shù)據(jù)才能運(yùn)算妒茬,算術(shù)轉(zhuǎn)換原則為:對(duì)于所有比int小的類型担锤,包括char, signed char, unsigned char, short, unsigned short,首先會(huì)提升為int類型。在進(jìn)行運(yùn)算時(shí)乍钻,以表達(dá)式中最長(zhǎng)類型為主肛循,將其他類型位據(jù)均轉(zhuǎn)換成該類型,int long float double
- 賦值轉(zhuǎn)換:進(jìn)行賦值操作時(shí)银择,賦值運(yùn)算符右邊的數(shù)據(jù)類型必須轉(zhuǎn)換成賦值號(hào)左邊的類型多糠,若右邊的數(shù)據(jù)類型的長(zhǎng)度大于左邊,則要進(jìn)行截?cái)嗷蛏崛氩僮鳌?/li>
- 輸出轉(zhuǎn)換: 在程序中將數(shù)據(jù)用printf函數(shù)以指定格式輸出時(shí)浩考,當(dāng)要輸出的鹽據(jù)類型與輸出格式不符時(shí)夹孔,便自動(dòng)進(jìn)行類型轉(zhuǎn)換,如一個(gè)long型數(shù)據(jù)用整型格式(%d)輸出時(shí),則相當(dāng)于將long型轉(zhuǎn)換成整型(int)數(shù)據(jù)輸出搭伤;一個(gè)字符(char)型數(shù)據(jù)用整型格式輸出時(shí)只怎,相當(dāng)于將char型轉(zhuǎn) 換成int型輸出。注意:較長(zhǎng)型數(shù)據(jù)轉(zhuǎn)換成短型數(shù)據(jù)輸出時(shí)怜俐,其值不能超出短型數(shù)據(jù)允許的值范圍身堡,否則 轉(zhuǎn)換時(shí)將出錯(cuò)。
三佑菩、計(jì)算機(jī)系統(tǒng)
-
32位操作系統(tǒng)
char :1個(gè)字節(jié)(固定)
*
(即指針變量): 4個(gè)字節(jié)(32位機(jī)的尋址空間是4個(gè)字節(jié)盾沫。同理64位編譯器)(變化)short int : 2個(gè)字節(jié)(固定)
int: 4個(gè)字節(jié)(固定)
unsigned int : 4個(gè)字節(jié)(固定)
float: 4個(gè)字節(jié)(固定)
double: 8個(gè)字節(jié)(固定)
long: 4個(gè)字節(jié)
unsigned long: 4個(gè)字節(jié)(變化*,其實(shí)就是尋址控件的地址長(zhǎng)度數(shù)值)
long long: 8個(gè)字節(jié)(固定)
-
64位操作系
char :1個(gè)字節(jié)(固定)*
(即指針變量): 8個(gè)字節(jié)short int : 2個(gè)字節(jié)(固定)
int: 4個(gè)字節(jié)(固定)
unsigned int : 4個(gè)字節(jié)(固定)
float: 4個(gè)字節(jié)(固定)
double: 8個(gè)字節(jié)(固定)
long: 8個(gè)字節(jié)
unsigned long: 8個(gè)字節(jié)(變化*其實(shí)就是尋址控件的地址長(zhǎng)度數(shù)值)
long long: 8個(gè)字節(jié)(固定)
四、其他
#pragma
是設(shè)定編譯器的狀態(tài)或者是指示編譯器完成一些特定的動(dòng)作殿漠。
#define
是預(yù)編譯指令
sizeof()
是運(yùn)算符赴精。