C語言技術(shù)體系自學(xué)筆記(四)-創(chuàng)新互聯(lián)

1.6 進(jìn)制

進(jìn)制也是進(jìn)制位,是人們規(guī)定的一種進(jìn)位方法,。對(duì)于任何一種進(jìn)制—X進(jìn)制,表示某一位置上的數(shù)運(yùn)算時(shí),就是逢X進(jìn)一位,十進(jìn)制就是逢十進(jìn)一,十六進(jìn)制就是逢十六進(jìn)一,二進(jìn)制就是逢二進(jìn)一。

為噶爾等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及噶爾網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站建設(shè)、噶爾網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F
16100002010

1.6.1 二進(jìn)制

二進(jìn)制是計(jì)算技術(shù)中廣泛采用的一種數(shù)制。二進(jìn)制數(shù)據(jù)是用0和1兩個(gè)數(shù)碼表示的數(shù)。它的基數(shù)為2,進(jìn)位規(guī)則是逢二進(jìn)一,借位規(guī)則是借一當(dāng)二。

當(dāng)前的計(jì)算機(jī)系統(tǒng)使用的基本上是二進(jìn)制系統(tǒng),數(shù)據(jù)在計(jì)算機(jī)中主要是以補(bǔ)碼的形式存儲(chǔ)的。

術(shù)語含義
bit(比特)一個(gè)二進(jìn)制代表一位,一個(gè)位只能表示0或1兩種狀態(tài)。數(shù)據(jù)傳輸是習(xí)慣以“位”(bit)為單位。
Byte(字節(jié))一個(gè)字節(jié)為8個(gè)二進(jìn)制,稱為8位,計(jì)算機(jī)中存儲(chǔ)的最小單位是字節(jié)。數(shù)據(jù)存儲(chǔ)是習(xí)慣以“字節(jié)”(Byte)為單位。
WORD(雙字節(jié))2個(gè)字節(jié),16位
DWORD兩個(gè)WORD,4個(gè)字節(jié),32位
1b1bit,1位
1B1Byte,1字節(jié),8位
1k,1K1024
1M(1兆)1024k, 1024*1024
1G1024M
1T1024G
1Kb(千位)1024bit,1024位
1KB(千字節(jié))1024Byte,1024字節(jié)
1Mb(兆位)1024Kb = 1024 * 1024bit
1MB(兆字節(jié))1024KB = 1024 * 1024Byte

十進(jìn)制轉(zhuǎn)化二進(jìn)制的方法:用十進(jìn)制數(shù)除以2,分別取余數(shù)和商數(shù),商數(shù)為0的時(shí)候,將余數(shù)倒著數(shù)就是轉(zhuǎn)化后的結(jié)果。

28/2=14........0

14/2=7.........0

7/2=3...........1

3/2=1............1

1/2=0............1

28化為二進(jìn)制為:11100

十進(jìn)制的小數(shù)轉(zhuǎn)換成二進(jìn)制:小數(shù)部分和2相乘,取整數(shù),不足1取0,每次相乘都是小數(shù)部分,順序看取整后的數(shù)就是轉(zhuǎn)化后的結(jié)果。

0.43*2=0.86...........0

0.86*2=1.72..........1

0.72*2=1.44..........1

0.44*2=0.88..........0

0.88*2=1.76..........1

0.43的二進(jìn)制數(shù)為:0.11

1.6.2 八進(jìn)制

八進(jìn)制,Octal,縮寫OCT或O,一種以8為基數(shù)的計(jì)數(shù)法,采用0,1,2,3,4,5,6,7八個(gè)數(shù)字,逢八進(jìn)1。一些編程語言中常常以數(shù)字0開始表明該數(shù)字是八進(jìn)制。

八進(jìn)制的數(shù)和二進(jìn)制數(shù)可以按位對(duì)應(yīng)(八進(jìn)制一位對(duì)應(yīng)二進(jìn)制三位),因此常應(yīng)用在計(jì)算機(jī)語言中。

二進(jìn)制轉(zhuǎn)八進(jìn)制

101 101 101 100

5? ? ? 5? ? ?5? ? ?4

八進(jìn)制轉(zhuǎn)二進(jìn)制

7? ? ?4? ? ? 6? ? 2

111 100 110 010

十進(jìn)制轉(zhuǎn)化八進(jìn)制的方法:

用十進(jìn)制數(shù)除以8,分別取余數(shù)和商數(shù),商數(shù)為0的時(shí)候,將余數(shù)倒著數(shù)就是轉(zhuǎn)化后的結(jié)果。

1.6.3 十六進(jìn)制

十六進(jìn)制(英文名稱:Hexadecimal),同我們?nèi)粘I钪械谋硎痉ú灰粯?,它?-9,A-F組成,字母不區(qū)分大小寫。與10進(jìn)制的對(duì)應(yīng)關(guān)系是:0-9對(duì)應(yīng)0-9,A-F對(duì)應(yīng)10-15。

十六進(jìn)制的數(shù)和二進(jìn)制數(shù)可以按位對(duì)應(yīng)(十六進(jìn)制一位對(duì)應(yīng)二進(jìn)制四位),因此常應(yīng)用在計(jì)算機(jī)語言中。

二進(jìn)制轉(zhuǎn)十六進(jìn)制:

0110 1011 1111

?6? ? ???b? ? ? ? f

十六進(jìn)制轉(zhuǎn)換為二進(jìn)制:

a? ? ? ? ?c? ? ?1? ? ? ?5

1010 1100 0001 0101

十進(jìn)制轉(zhuǎn)化十六進(jìn)制的方法:

用十進(jìn)制數(shù)除以16,分別取余數(shù)和商數(shù),商數(shù)為0的時(shí)候,將余數(shù)倒著數(shù)就是轉(zhuǎn)化后的結(jié)果。

1.6.4 C 語言如何表示相應(yīng)的進(jìn)制數(shù)

十進(jìn)制以正常數(shù)字1-9開頭,如123
八進(jìn)制以數(shù)字0開頭,如0123
十六進(jìn)制以0x開頭,如0x123
二進(jìn)制C語言不能直接書寫二進(jìn)制數(shù)
int a = 123;		//十進(jìn)制方式賦值
int b = 0123;		//八進(jìn)制方式賦值, 以數(shù)字0開頭
int c = 0xABC;	//十六進(jìn)制方式賦值
//如果在printf中輸出一個(gè)十進(jìn)制數(shù)那么用%d,八進(jìn)制用%o,十六進(jìn)制是%x
printf("十進(jìn)制:%d\n",a );
printf("八進(jìn)制:%o\n", b);	//%o,為字母o,不是數(shù)字
printf("十六進(jìn)制:%x\n", c);
1.7 計(jì)算機(jī)內(nèi)存數(shù)值存儲(chǔ)方式

1.7.1 原碼、反碼、補(bǔ)碼

1)原碼

原碼有如下特點(diǎn):

最高位表示符號(hào)位,0表示正, 1表示負(fù)

其他數(shù)值部分就是數(shù)值本身絕對(duì)值的二進(jìn)制數(shù)

負(fù)數(shù)的原碼是在其絕對(duì)值的基礎(chǔ)上,最高位變?yōu)?;

例如:以一個(gè)字節(jié)的大小描述

十進(jìn)制數(shù) 15 原碼 0000 1111

十進(jìn)制數(shù) -15 原碼 1000 1111

原碼表示法簡單易懂,與帶符號(hào)數(shù)本身轉(zhuǎn)換方便,只要符號(hào)還原即可,但當(dāng)兩個(gè)正數(shù)相減或不同符號(hào)數(shù)相加時(shí),必須比較兩個(gè)數(shù)哪個(gè)絕對(duì)值大,才能決定誰減誰,才能確定結(jié)果是正還是負(fù),所以原碼不便于加減運(yùn)算。

2)反碼

對(duì)于正數(shù):反碼與原碼一致

對(duì)于負(fù)數(shù):符號(hào)位不變,其余位值變?yōu)橄喾磾?shù)

例:以一個(gè)字節(jié)的大小描述

十進(jìn)制數(shù) 15 原碼 0000 1111 反碼 0000 1111

十進(jìn)制數(shù) -15 原碼 1000 1111 反碼 1111 0000

3)補(bǔ)碼

在計(jì)算機(jī)系統(tǒng)中,數(shù)值存儲(chǔ)均是以補(bǔ)碼形式存儲(chǔ)。計(jì)算機(jī)中是不存在減法的

補(bǔ)碼特點(diǎn):

對(duì)于正數(shù): 原碼、反碼、補(bǔ)碼相同

對(duì)于負(fù)數(shù):其補(bǔ)碼在反碼的基礎(chǔ)上+1

對(duì)于負(fù)數(shù):補(bǔ)碼符號(hào)位不動(dòng),其余位求反,最后加1,得到原碼

或補(bǔ)碼-1,符號(hào)位不動(dòng),其余位取反,得到原碼

例:以一個(gè)字節(jié)的大小描述

十進(jìn)制數(shù) 15 原碼 0000 1111 反碼 0000 1111 補(bǔ)碼 0000 1111

十進(jìn)制數(shù) -15 原碼 1000 1111 反碼 1111 0000 補(bǔ)碼 1111 0001

以二進(jìn)制方式計(jì)算如下式子(以一個(gè)字節(jié)大小計(jì)算):

9-6:

9 補(bǔ)碼:0000 1001

-6 補(bǔ)碼:1111 1010

9+(-6) 補(bǔ)碼:10000 0011 一個(gè)字節(jié)為8位,最高位1在第九位溢出,舍去 得到

0000 0011換為原碼:0000 0011 換為十進(jìn)制表示 3

在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來存儲(chǔ),主要原因是:

  1. 統(tǒng)一了零的編碼

  2. 將符號(hào)位和其它位統(tǒng)一處理

  3. 將減法運(yùn)算轉(zhuǎn)變?yōu)榧臃ㄟ\(yùn)算

  4. 兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄

1.7.2 數(shù)值溢出

當(dāng)超過一個(gè)數(shù)據(jù)類型能夠存放大的范圍時(shí),數(shù)值會(huì)溢出

有符號(hào)位最高位溢出的區(qū)別:符號(hào)位溢出會(huì)導(dǎo)致數(shù)的正負(fù)發(fā)生改變,但最高位的溢出會(huì)導(dǎo)致最高位丟失。

例如 以char類型為例

char a=127;
char b=1;
printf("%d\n",a+b);//-128

a=127 補(bǔ)碼為:0111 1111

b=1 補(bǔ)碼為:0000 0001

a+b 補(bǔ)碼為:1000 0000 原碼:符號(hào)位不變,按位取反,最后末尾+1 得 1111 1111 +1 即為 -128

由此可是,一個(gè)數(shù)據(jù)類型的大值加1,反而會(huì)因?yàn)橐绯?,得到此?shù)據(jù)類型的 最小值

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標(biāo)題:C語言技術(shù)體系自學(xué)筆記(四)-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.muchs.cn/article30/coieso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、網(wǎng)站收錄、網(wǎng)站改版、全網(wǎng)營銷推廣、電子商務(wù)域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站