————轉(zhuǎn)載——原作者:D一夢(mèng)三四年
本文目錄:
1.如何存儲(chǔ)0和1
2.如何存儲(chǔ)數(shù)字
3.如何存儲(chǔ)字母
4.如何存儲(chǔ)漢字
5.如何利用更少的空間存儲(chǔ)更多字符
1.如何存儲(chǔ)0和1
在計(jì)算機(jī)中所有的數(shù)據(jù)都被存儲(chǔ)為一連串的二進(jìn)制信息(0和1)
內(nèi)存條中間有一塊塊方塊产园,每個(gè)方塊上就有很多存“0”和“1”的機(jī)關(guān)戏阅,可以把一個(gè)機(jī)關(guān)想象成一個(gè)圓點(diǎn),一個(gè)圓點(diǎn)就是一個(gè)電池组民,那么就有了下面幾個(gè)環(huán)節(jié)
假設(shè)我們每個(gè)方塊都是一個(gè)小電池载迄,當(dāng)我們要存儲(chǔ)時(shí)讯柔,先選定一列方塊,開(kāi)始每行充電护昧,如果是“1”就充電魂迄,是“0”就不充電。由于這樣是無(wú)法存儲(chǔ)電量的惋耙,充電的速度是幾納秒捣炬,耗電的速度是幾毫秒,計(jì)算機(jī)采取的做法是在耗完電之前再充一次绽榛,這里就依賴 CPU 的赫茲數(shù)值湿酸,CPU 的多少赫茲就代表每秒可以充多少次電,即代表著CPU的性能高低灭美。
2.如何存儲(chǔ)數(shù)字
我們平時(shí)所說(shuō)的數(shù)值一般都是進(jìn)制的推溃,但計(jì)算機(jī)只能存儲(chǔ)0和1,所以需要將10進(jìn)制的數(shù)轉(zhuǎn)為二進(jìn)制讓計(jì)算機(jī)進(jìn)行儲(chǔ)存届腐。但也有一些特殊情況铁坎,如果想存 -3 就需要使用補(bǔ)碼(計(jì)算機(jī)無(wú)法存儲(chǔ)負(fù)號(hào));如果想存 0.75 就需要使用浮點(diǎn)數(shù)(計(jì)算機(jī)無(wú)法存儲(chǔ)小數(shù)點(diǎn))犁苏。
3.如何存儲(chǔ)字符
字符存儲(chǔ)和數(shù)字的存儲(chǔ)有著相似的過(guò)程硬萍,通過(guò)ASCII表,我們可以查詢到字符對(duì)應(yīng)的二進(jìn)制數(shù)围详。
ASCII.png
4.如何存儲(chǔ)中文
和存儲(chǔ)字符類似朴乖,中文也有對(duì)應(yīng)的CODE值來(lái)進(jìn)行存儲(chǔ),將16進(jìn)制的CODE值轉(zhuǎn)為二進(jìn)制短曾,計(jì)算機(jī)就可以存儲(chǔ)了寒砖。詳見(jiàn)GBK表
GBK.png
5.如何利用更少的空間存儲(chǔ)更多字符
Unicode:是計(jì)算機(jī)科學(xué)領(lǐng)域里的一項(xiàng)業(yè)界標(biāo)準(zhǔn)。它對(duì)世界上大部分文字系統(tǒng)進(jìn)行了整理嫉拐、編碼哩都,使得電腦可以用更為簡(jiǎn)單的方式來(lái)呈現(xiàn)和處理文字。
如何將 Unicode 存儲(chǔ)到計(jì)算機(jī)中
Unicode 需要使用 32 位(4字節(jié))來(lái)存儲(chǔ)字符婉徘,他的存儲(chǔ)方式如下
//低性價(jià)比
a -> 0000 0000 0000 0000 0000 0000 0110 0001 = 0061
你 -> 0000 0000 0000 0000 0100 1111 0110 0000 = 4F60
由于其表示簡(jiǎn)單的字符時(shí)也使用4個(gè)字節(jié)漠嵌,浪費(fèi)了很多資源咐汞,為提高效率,人們開(kāi)始使用UTF-8儒鹿,UTF-8是Unicode存到計(jì)算機(jī)的一種編碼方式化撕,它不是字符集,它可以用來(lái)表示Unicode標(biāo)準(zhǔn)中的任何字符约炎。
//高性價(jià)比
a -> 01100001
你 -> 11100100 10111101 10100000
像“a”這種較短的字符(小于七位的)植阴,我們可以直接在前面補(bǔ)零表示
像“你”這種長(zhǎng)的字符,由于計(jì)算機(jī)讀取時(shí)無(wú)法弄清楚是存儲(chǔ)了一個(gè) 由兩個(gè)一字節(jié)組成的字符還是一個(gè)由兩字節(jié)組成的字符圾浅,解決步驟:
我們從高位依次劃分6個(gè)字符進(jìn)行分組掠手,直到分出的組不足6個(gè)。即:0100 111101 100000
分別在每一組前面補(bǔ)全讀取這一串二進(jìn)制信息的規(guī)則狸捕,即:11100100 10111101 10100000
1110+0100:111表示計(jì)算機(jī)需要讀取3個(gè)字節(jié)喷鸽,每個(gè)字節(jié)的開(kāi)頭都是10,10+111101灸拍、10+100000: 所以后兩個(gè)分組的開(kāi)頭也補(bǔ)上10做祝,說(shuō)明是和第一個(gè)字節(jié)一起的,組成一個(gè)字符鸡岗。