99热这里只有精品2-99热这里只有精品6免费-99热这里只有精品国产99-99热这里只有精品国产99热门精品-99热这里只有精品国产动漫

編程代碼
新聞詳情

計(jì)算機(jī)的數(shù)據(jù)是以什么編碼形式表示的

發(fā)布時(shí)間:2021-03-17 09:05:02 瀏覽次數(shù):4427

在計(jì)算機(jī)中有以下幾個(gè)對象需要表示:

程序

整數(shù)

浮點(diǎn)數(shù)

字符串

邏輯值:0表示false,1表示true

在計(jì)算機(jī)中所有編碼的基本元素都是通過0、1這兩個(gè)基本符號來表示,n位可以表示2^n個(gè)不同的對象

下面我們分別對以上的幾個(gè)對象進(jìn)行簡單的介紹

邏輯型數(shù)據(jù)

True 真--1

False 假—0

數(shù)據(jù)運(yùn)算

與運(yùn)算

或運(yùn)算

非運(yùn)算

異或運(yùn)算


字符型數(shù)據(jù)

在很久之前,一群美國人研究出來了計(jì)算機(jī),其中他們發(fā)現(xiàn)他們只需要8位二進(jìn)制編碼(一個(gè)字節(jié))就可以表示世間萬物(其實(shí)它們只使用了7位),2^7=128,它們用這128位,從0到127來存儲(chǔ)數(shù)字和字母,這個(gè)編碼就是我們熟悉的Ascii碼


但是世界各國都用計(jì)算機(jī),但是不使用中文,比如我們中國就不使用中文,所以這個(gè)時(shí)候中國研究出來了GB2312和GBK。當(dāng)前其它國家也開發(fā)出來了符合本國國情的編碼,那么這此時(shí)出現(xiàn)一個(gè)問題,就是自己國家用著很嗨,但是國與國之間交流的時(shí)候就含麻煩了。

所以為了解決這個(gè)問題,標(biāo)記標(biāo)準(zhǔn)組織ISO著手解決這個(gè)問題,它們統(tǒng)一標(biāo)準(zhǔn),包含所有國家的大多數(shù)的字符,這個(gè)標(biāo)準(zhǔn)編碼就是Unicode,unicode開始制定的時(shí)候計(jì)算機(jī)的存儲(chǔ)容量得到了極大的發(fā)展,所以它直接使用16個(gè)字符來表示一個(gè)字符,那么2^16=65536一共可以表示這么多的字符,它將整個(gè)編碼空間劃分為塊,每塊為16的倍數(shù),然后按塊進(jìn)行分配。同時(shí)它保留了6400個(gè)碼點(diǎn)供本地化使用。但是它仍然存在一個(gè)問題,就是這65536仍然是不夠用啊,因?yàn)槭澜缟嫌刑嗟淖址枰硎玖恕?/p>

隨著計(jì)算機(jī)的發(fā)展,現(xiàn)在已經(jīng)是64位的了, 2^64據(jù)說可以表示地球上的每一粒沙子,所以問題很好解決,只需要通過64位來表示不就行了嗎?

但是此時(shí)還是存在一個(gè)問題,這個(gè)問題就是在之前的時(shí)候ascii使用7個(gè)字節(jié)就可以表示出常用的數(shù)字和字母,那么現(xiàn)在使用64位來表示,豈不是太浪費(fèi)空間了嗎?不過沒有什么可以難倒科學(xué)家的,科學(xué)家提出了UTF-8編碼,這個(gè)是一個(gè)變長的字符編碼,它可以提高存儲(chǔ)空間的利用率。

首先它通過首字節(jié)來確定整個(gè)字符的長度,然后除了字符首字節(jié)外,均以“10”開始,這個(gè)編碼太厲害了,能用7位表示的堅(jiān)決不用31位表示,這樣既可以表示大量的字符,又不會(huì)浪費(fèi)太多的空間,所以它能為了互聯(lián)網(wǎng)上占統(tǒng)治地位的字符集。


如圖所示,我們可以看到字節(jié)1中前面的數(shù)字本標(biāo)識字符的位數(shù),當(dāng)為0時(shí)表示7位,當(dāng)110時(shí)表示11位,然后字節(jié)1之后的所有字節(jié)均通過10開頭,這就是它的格式。

字符型就是常常通過utf-8來進(jìn)行表示,那么現(xiàn)在我們來說說在計(jì)算機(jī)中是怎么存儲(chǔ)數(shù)值型數(shù)據(jù)的,數(shù)值型分為兩種一種是定點(diǎn)數(shù),還有一種是浮點(diǎn)數(shù)。

其中定點(diǎn)數(shù)有三種情況,一種是整數(shù)、另一種是定點(diǎn)小數(shù)、還有一種是小數(shù)點(diǎn)位置固定。

浮點(diǎn)數(shù)有一種就是小數(shù)點(diǎn)位置浮動(dòng)。

進(jìn)制

下面我們僅僅介紹整數(shù)。要想表示一個(gè)整數(shù),首先需要確定數(shù)制,比如在現(xiàn)實(shí)生活中我們常常使用的數(shù)值是10進(jìn)制,但是在計(jì)算機(jī)中使用的是二進(jìn)制:


我們先來看一下二進(jìn)制和十進(jìn)制之間的轉(zhuǎn)換:

二進(jìn)制轉(zhuǎn)成10進(jìn)制


10進(jìn)制轉(zhuǎn)成2進(jìn)制


把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制,對整數(shù)部分通過除2取余數(shù)來完成,對小數(shù)部分通過乘以2取整數(shù)來完成。

整數(shù)有正數(shù)和負(fù)數(shù)的區(qū)別,所以計(jì)算機(jī)中使用最高位來來表示正負(fù)數(shù),其中0表示整數(shù),1表示負(fù)數(shù)。其它位表示數(shù)據(jù)位,比如:

正數(shù)7,在計(jì)算機(jī)中用一個(gè)8位的二進(jìn)制數(shù)來表示,是00000111,而負(fù)數(shù)-7,則用10000111表示

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

原碼

反碼

補(bǔ)碼

0000_0001

0000_0001

0000_0001

1000_0001

1111_1110

1111_1111

正數(shù)的原碼、反碼、補(bǔ)碼是一樣的,而負(fù)數(shù)的反碼等于源碼除符號位取反,補(bǔ)碼等于反碼在最低為加1。

這里就會(huì)產(chǎn)生兩個(gè)問題,第一個(gè)問題,為什么需要有反碼和補(bǔ)碼,它的意思是什么?第二為什么整數(shù)的反碼和補(bǔ)碼和源碼是一樣的。

首先在計(jì)算機(jī)中我們需要進(jìn)行加減運(yùn)算,但是會(huì)有下面的幾種情況出現(xiàn)

我們來看看如果直接使用原碼進(jìn)行加減是否可以?

1+(-1)=[0000_00001]+[1000_0001]=[1000_0010]=-2

我們可以看到正數(shù)相加的時(shí)候毫無問題,但是一旦出現(xiàn)負(fù)數(shù)的情況就完蛋了,我們可以看到1-1可以看成是1+(-1)結(jié)果確不等于0,而是等于-2,這顯然不符合我們的邏輯。

那么我們不使用源碼來表示了我們使用反碼來計(jì)算,

-1的原碼是[1000_0001]、反碼[1111_1110]

2的源碼是[0000_0010]、反碼[0000_0010]

-1+2=[1111_1110]+[0000_0010]=[0000_0000]=0

我們發(fā)現(xiàn)這也不符合邏輯,-1+2應(yīng)該等于0

那么下面我們再來使用補(bǔ)碼來試一下:

-1的原碼是[1000_0001]、反碼[1111_1110]、補(bǔ)碼[1111_1111]

2的源碼是[0000_0010]、反碼[0000_0010]、補(bǔ)碼[0000_0010]

-1+2=[1111_1111]+[0000_0010]=[0000_0001]=1

我們發(fā)現(xiàn)這個(gè)是符號我們的邏輯的,所以回答第二個(gè)問題,為什么要有補(bǔ)碼呢?這就是因?yàn)橹挥醒a(bǔ)碼可以保證我們的加減運(yùn)算是正確的,但是為什么會(huì)出現(xiàn)這種情況呢?


我們可以發(fā)現(xiàn)在負(fù)原碼中每增加一個(gè)二進(jìn)制單位對應(yīng)的是遞減的(1000_0001和1000——0000相比)按照道理來說1000_0001應(yīng)該比1000_0000大,但是事實(shí)確相反,而正每增加一個(gè)二進(jìn)制單位對應(yīng)的真數(shù)是遞增的,這個(gè)符合我們的需要,為了解決負(fù)數(shù)的這個(gè)問題,我們可以取反碼


我們可以發(fā)現(xiàn)反碼滿足了負(fù)原碼中每增加一個(gè)二進(jìn)制單位對應(yīng)的是遞增的(1111_1110和1111_1111相比,1111_1111比1111_11110大),解決第一個(gè)問題之后,還有第二個(gè)問題,這個(gè)問題就是0的問題,因?yàn)闆]有正0和負(fù)零的說法,但是上面確有正零和負(fù)零區(qū)別,這就導(dǎo)致了重復(fù)的問題,這個(gè)時(shí)候我們發(fā)現(xiàn)當(dāng)給負(fù)原碼加1,那么0就統(tǒng)一了,如下所示:


那么問題就解決了,那么還需要注意的是1000_0000這個(gè)反碼表示-128,所以補(bǔ)碼的表示范圍是[-128~127] ,這樣一來256個(gè)二進(jìn)制正好表示256個(gè)整數(shù)

計(jì)算機(jī)還有一種編碼表示是檢錯(cuò)糾錯(cuò)碼

  • 它能夠使編碼具有某種特征,通過檢查這種特征是否存在來判斷編碼是否正確

碼距的概念

碼距是指任意兩個(gè)合法碼之間至少有幾個(gè)二進(jìn)制位不相同。

僅有一位不同的編碼是無糾錯(cuò)能力的,例如用4位二進(jìn)制表示16種狀態(tài),則16種編碼都用到了,此時(shí)碼距為1。任意一個(gè)編碼狀態(tài)的四位碼中的一位或者幾位出錯(cuò),都會(huì)變成另外一個(gè)合法碼,那么這種編碼是沒有檢錯(cuò)能力的。

若用4個(gè)二進(jìn)制位表示8種合法的狀態(tài),那么就可以只使用其中的8個(gè)編碼來表示,另外8個(gè)為非法編碼,那么合法的碼距為2。因?yàn)榇藭r(shí)任何一位出錯(cuò)后都會(huì)成為非法碼,這樣有檢測一位出錯(cuò)的能力。

合理增大碼距,那么就能提高錯(cuò)誤的能力,但是會(huì)使用更多的二進(jìn)制,增加了電子路線的復(fù)雜性和數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)傳送的數(shù)量。

常用的檢錯(cuò)糾錯(cuò)碼有以下幾種:


檢錯(cuò)糾錯(cuò)過程如下:

先對原始數(shù)據(jù)使用校驗(yàn)碼進(jìn)行編碼(加進(jìn)特征),然后傳輸,傳輸完成之后進(jìn)行譯碼,然后判斷收到的碼字是否有問題

下面我們講解一下奇偶校驗(yàn)

原理是在k位數(shù)據(jù)碼之外增加1位校驗(yàn)位,使得K+1位碼字中取值1的位數(shù)總保持為偶數(shù)(偶效驗(yàn))或奇數(shù)(寄校驗(yàn)),舉一個(gè)例子:


對待傳輸數(shù)據(jù)10110110約定采用其校驗(yàn)時(shí),發(fā)送方所需要發(fā)送的校驗(yàn)碼為010110110,對于接收方來說,如果接收到的數(shù)據(jù)中’1’的個(gè)數(shù)不為奇數(shù)時(shí),就會(huì)認(rèn)為數(shù)據(jù)出錯(cuò)。但是它并不知道哪里出錯(cuò)了,也就是它沒有糾錯(cuò)的能力。

在線客服 雙翌客服
客服電話
  • 0755-23712116
  • 13310869691
主站蜘蛛池模板: 日本黄色录像| 偷亚洲偷国产欧美高清| 91久久青青草原免费| 欧美一区二区三区婷婷月色| 亚洲第九十九页| 欧美伦妇高清免费| 国产欧美成人| 婷婷成人亚洲| 国产拍拍1000部ww| 免费爱爱视频| 永久免费人成网ww555kkk手机 | 国产成人啪午夜精品网站| 欧美毛片免费观看| 亚洲精品一区二区观看| 女黄色片| 亚洲综合一二三区| 免费网站在线观看高清版| 国产成年人在线观看| 美国三级在线| 欧美黄色大片在线观看| 亚洲经典一区| 一级做性色a爱片久久片| 亚洲欧美日韩在线一区| 麻豆精品永久免费视频| 99国产精品热久久久久久夜夜嗨| 草久久网| 免费看欧美一级特黄α大片| 中文色| 91精选在线观看| 欧美日韩在线播放成人| www.妞干网| 国产高清视频在线免费观看| 免费三级大片| 日本一级毛片无遮挡| 亚洲自偷自拍另类12p| 久久视频精品| 深夜爽爽福利gif在线观看| 国产一级毛片午夜福| 亚洲国产免费| aa老外一级毛片| 男人的天堂亚洲|