程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C語言數據存儲以及二進制思想

C語言數據存儲以及二進制思想

編輯:關於C語言
 

編程過程中,我們大部分時間是與CPU和內存打交道,很少直接操作硬盤,下面我們來看看數據是怎樣保存在內存中的。

內存條是一個非常精密的部件,包含了上億個電子元器件,它們很小,達到了納米級別。這些元器件,有兩種狀態,通電和斷電,通電是高電平(5V),用1來表示,斷電是低電平(0V),用0來表示。所以,一個元器件有2種狀態。

如果我們通過電路來控制這些元器件的通斷電,那麼就可以得到很多0、1狀態的組合。例如,8個元器件有 28=256 種不同的組合,16個元器件有 216=65536 種不同的狀態。雖然一個元器件只能表示2種狀態,但是多個組合起來就可以表示很多狀態了,所以,我們通常將8個、16個、24或32個元器件組合起來表示一個字符,8個元器件可以表示256個字符,16個可以表示65536個字符。

我們將1個元器件稱為1Bit(比特),8個元器件稱為1Byte(字節),那麼16個元器件就是2Byte,32個就是4Byte,以此類推,8×1024個元器件就是1024Byte,簡寫為1KB,8×1024×1024個元器件就是1024KB,簡寫為1MB,8×1024×1024×1024個元器件就是1024MB,簡寫為1GB。現在,你知道1GB的內存有多少個元器件了吧。

單位換算:

1Byte = 8 Bit

1KB = 1024Byte

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

你看,在內存中沒有abc這樣的字符,只有0和1兩個數字,計算機也只認識0和1。所以,計算機使用二進制,而不是我們熟悉的十進制,寫入內存中的數據,都會被轉換成0和1的組合。

二進制思想

十進制有0~9共10個數字,基數為10,逢十進一,借一當十;二進制只有0和1兩個數字,基數為2,逢二進一,借一當二。例如:

十進制 4321 = 4×103 + 3×102 + 2×101 + 1×100

二進制 1101 = 1×23 + 1×22 + 0×21 + 1×20 = 8 + 4 + 0 + 1 = 13

二進制 110.11 = 1×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 = 4 + 2 + 0 + 0.5 + 0.25 = 6.75

二進制數據的算術運算的基本規律和十進制數的運算十分相似。最常用的是加法運算和乘法運算。

二進制加法:

0+0=0

0+1=1

1+0=1

1+1=10

二進制乘法:

0×0=0

1×0=0

0×1=0

1×1=1

二進制減法:

0-0=0

1-0=1

1-1=0

10-1=1

二進制除法:

0÷1=0

1÷1=1

八進制和十六進制

除了二進制,編程中也經常使用八進制和十六進制。

八進制有0~7共8個數字,基數為8,逢八進一,借一當八;十六進制中,用A來表示10,B表示11,C表示12,D表示13,E表示14,F表示15,因此有0~F共16個數字,基數為16,逢16進1,借1當16。例如:

八進制 3072 = 3×83 + 0×82 + 7×81 + 2×80 = 1536 + 0 + 56 + 2 = 1594

十六進制 E3F9 = 14×163 + 3×162 + 15×161 + 9×160 = 57344 + 768 + 240 + 9 = 58361

為了加深印象,最後給大家看個笑話。

程序員A:“哥們兒,最近手頭緊,借點錢?”

程序員B:“成啊,要多少?”

程序員A:“一千行不?”

程序員B:“咱倆誰跟誰!給你湊個整,1024,拿去吧。”

你看懂這個笑話了嗎?請選出正確答案。

A) 因為他同情程序員A,多給他24塊

B) 這個程序員不會數數,可能是太窮餓暈了

C) 這個程序員故意的,因為他獨裁的老婆規定1024是整數

D) 就像100是10的整數次方一樣,1024是2的整數次方,對於程序員就是整數

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved