在計算機中所有的數(shù)據(jù)都被存儲為一連串的二進制信息(0和1)。在這里我將淺談這些二進制信息是如何表示計算機中的字符和數(shù)字的给涕。
第一步:如何存儲0和1?
在計算機的內(nèi)存里有許多存儲0和1設(shè)置吁恍。
如圖所示胰舆,每一個圓圈是一個電池,當(dāng)要存儲一串二進制信息時蕴掏,計算機會先選擇一列進行充電障般, 然后利用橫向和縱向兩條線確定當(dāng)前要存儲信息的位置。從這一列的第一個開始遞歸的選擇盛杰,如果這一個電池代表1就進行充電(在圖中顯示紅色)挽荡,代表0就不充電(在圖中顯示白色)。
這樣就可以在計算機中存儲二進制數(shù)了即供。
第二步:如何存儲數(shù)字定拟?
十進制換算成二進制
37 = 100101
0.75 = 0.11
負數(shù)會以補碼的形式存儲
小數(shù)會以浮點數(shù)的形式存儲
具體換算方法是數(shù)學(xué)問題,請自行了解
第三步:如何存儲字符
字符是從從存儲數(shù)字的思路延伸過來的募狂。
- 外國人最開始制訂了一個ASCII 美國信息交換標(biāo)準(zhǔn)代碼
如果你想儲存 a办素,那么就儲存 97(10) 對應(yīng)的二進制
a -> 0110 0001(2) -> 61(16)
如果你想儲存 字符1,那么就儲存 49(10) 對應(yīng)的二進制
1 -> 0011 0001(2) -> 31(16)
- 存儲中文
我們國家自己制訂了一個存儲中文的表
GB 2312 中國國家標(biāo)準(zhǔn)簡體中文字符集
GB2312 共收錄 6763 個漢字祸穷,同時收錄了包括拉丁字母性穿、希臘字母、日文平假名及片假名字母雷滚、俄語西里爾字母在內(nèi)的 682 個字符需曾。
后來為了存儲生僻字、繁體字祈远、日語呆万、朝鮮語等,微軟推出了 GBK 字符集
統(tǒng)一標(biāo)準(zhǔn)存儲所有字符
Unicode 字符集 將全球文字統(tǒng)一到一個表里面车份,包括中日韓文字谋减、藏文、盲文扫沼、楔形文字出爹、 顏文字:-)
、繪文字??
如何將Unicode存到計算機里缎除?
由于unicode存儲有些字符占用內(nèi)存太大严就,為了解決這個問題,有了一種字符編碼方式——UTF-8器罐。
例如:
- 低效率方式:
a -> 00000000 00000000 00000000 01100001(2) = 0061(16)
你 -> 00000000 00000000 01001111 01100000(2) = 4F60(16) - 高效率方式:
a -> 01100001
你-> 11100100 10111101 10100000
像“a”這種較短的字符(小于七位的)梢为,我們可以直接在前面補零表示
像“你”這種長的字符,由于計算機讀取時無法弄清楚是存儲了一個 由
兩個一字節(jié)
組成的字符還是一個由兩字節(jié)
組成的字符,解決方法:我們從高位依次劃分6個字符進行分組铸董,直到分出的組不足6個祟印。即:0100 111101 100000
分別在每一組前面補全讀取這一串二進制信息的規(guī)則,即:11100100 10111101 10100000
1110+0100:111表示計算機需要讀取3個字節(jié)袒炉,每個字節(jié)的開頭都是10
10+111101旁理、10+100000: 所以后兩個分組的開頭也補上10,說明是和第一個字節(jié)一起的我磁,組成一個字符孽文。