11 | 二進(jìn)制編碼:“手持兩把錕斤拷,口中疾呼燙燙燙”爽哎?

程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu)。對(duì)應(yīng)硬件器一,算法就是計(jì)算機(jī)指令课锌,數(shù)據(jù)結(jié)構(gòu)就對(duì)應(yīng)二進(jìn)制數(shù)據(jù)

計(jì)算機(jī)都是用 0 和 1 組成的二進(jìn)制祈秕,表示所有信息渺贤。指令用到的機(jī)器碼也是二進(jìn)制表示;內(nèi)存里字符串请毛、整數(shù)志鞍、浮點(diǎn)數(shù)也是。

快速瀏覽一遍整數(shù)方仿、文本字符串的二進(jìn)制表示固棚。遇到亂碼是怎么回事兒、Unicode 和 UTF-8 之間有什么關(guān)系仙蚜。

一此洲、理解二進(jìn)制的逢二進(jìn)一

十進(jìn)制整數(shù),都能通過二進(jìn)制表示出來委粉。二進(jìn)制對(duì)應(yīng)到十進(jìn)制呜师,比如 0011?=3

把 13 這個(gè)十進(jìn)制數(shù),用短除法轉(zhuǎn)化成二進(jìn)制贾节,=?1101

負(fù)數(shù):最左側(cè)的一位汁汗,當(dāng)成是對(duì)應(yīng)的正負(fù)號(hào),比如 0 為正數(shù)栗涂,1 為負(fù)數(shù)

0011 = +3知牌。補(bǔ)碼1011 = -3。整數(shù)的原碼表示法戴差。缺點(diǎn)1000 代表 0送爸, 0000 也代表 0。

另一種表示法=-5:

最高位1必然是負(fù),最高位 0必然是正袭厂。 0000 表示 0墨吓,1000 表示 -8。4 位二進(jìn)制數(shù)纹磺,可從 -8 到 7 這 16 個(gè)整數(shù)帖烘,不會(huì)浪費(fèi)一位。

?-5 + 1 = -4橄杨,-5 + 6 = 1秘症。

字符串的表示,從編碼到數(shù)字式矫,都可用二進(jìn)制表示乡摹。

二、ASCII 碼

8 位二進(jìn)制,表示需要所有字符(American Standard Code for Information Interchange,美國信息交換標(biāo)準(zhǔn)代碼)饥悴。

ASCII 碼就好比字典, 128 個(gè)不同數(shù)8 位二進(jìn)制映射128 個(gè)不同字符里板熊。a 在 ASCII 里是第 97 個(gè),二進(jìn)制 0110 0001察绷,十六進(jìn)制 61干签。A第 65 個(gè),二進(jìn)制0100 0001拆撼,十六進(jìn)制41容劳。

ASCII ,9 不是 0000 1001情萤,而是 0011 1001鸭蛙。15 不是用 0000 1111,兩個(gè)字符 1 和 5 連續(xù)放在一起筋岛,就是 0011 0001 和 0011 0101娶视,用兩個(gè) 8 位表示。

最大的 32 位整數(shù)睁宰,2147483647肪获。用整數(shù)只需 32 位。用字符串(多占空間)有 10 個(gè)字符柒傻,每個(gè)字符用 8 位的話孝赫,需要整整 80 位

存儲(chǔ)數(shù)據(jù)用二進(jìn)制序列化红符,不是簡單地把數(shù)據(jù)通過 CSV 或者 JSON進(jìn)行序列化青柄。不管是整數(shù)也好伐债,浮點(diǎn)數(shù)也好,采用二進(jìn)制序列化會(huì)比存儲(chǔ)文本省下不少空間致开。

ASCII 碼只表示了 128 個(gè)字符不太夠用峰锁。于是創(chuàng)建了對(duì)應(yīng)的字符集(Charset)和字符編碼(Character Encoding)。

字符集双戳,字符的集合虹蒋。比如“中文(《新華字典》里面出現(xiàn)的所有漢字)”就是一個(gè)字符集,“”飒货, Unicode是字符集魄衅,150 種語言14 萬個(gè)不同的字符。

字符編碼:字符(字符集里)用二進(jìn)制表示的字典塘辅。 Unicode可用 UTF-8晃虫、UTF-16編碼儲(chǔ)成二進(jìn)制。有了 Unicode可用不止 UTF-8 一種編碼形式扣墩,知道編碼規(guī)則傲茄,可以正常傳輸、顯示代碼沮榜。

同樣文本不同編碼存儲(chǔ)。另一個(gè)程序喻粹,不同的編碼方式來進(jìn)行解碼和展示蟆融,就會(huì)亂碼。就像密語通信守呜,用錯(cuò)密碼本不知所云型酥。

搜索郵件歷史出現(xiàn)了“錕斤拷”

想要 Unicode 編碼記錄文本,但這些字符在 Unicode 中并不存在查乒。Unicode 統(tǒng)一記錄為 U+FFFD 編碼弥喉。如果用 UTF-8 的格式存儲(chǔ)下來,就是\xef\xbf\xbd玛迄。如果連續(xù)兩個(gè)這樣的字符放在一起由境,\xef\xbf\xbd\xef\xbf\xbd,這個(gè)時(shí)候蓖议,如果程序把這個(gè)字符虏杰,用 GB2312 的方式進(jìn)行 decode,就會(huì)變成“錕斤拷”勒虾。這就好比我們用 GB2312 這本密碼本纺阔,去解密別人用 UTF-8 加密的信息,自然沒辦法讀出有用的信息修然。

而“燙燙燙”笛钝,則是因?yàn)槿绻阌昧?Visual Studio 的調(diào)試器质况,默認(rèn)使用 MBCS 字符集〔C遥“燙”在里面是由 0xCCCC 來表示的结榄,而 0xCC 又恰好是未初始化的內(nèi)存的賦值。于是啃奴,在讀到沒有賦值的內(nèi)存地址或者變量時(shí)潭陪,電腦就開始大叫“燙燙燙”了。

課后思考

負(fù)數(shù)是原碼表示最蕾,應(yīng)該如何處理依溯?如果是補(bǔ)碼表示的呢?請你用二進(jìn)制加法試著算一算瘟则,-5+4=-1黎炉,通過原碼和補(bǔ)碼是如何進(jìn)行的?

[-5+4]補(bǔ)=[-5]補(bǔ)+[4]補(bǔ)=[1011+0100]補(bǔ)=[1111]補(bǔ)? 原碼1001

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末醋拧,一起剝皮案震驚了整個(gè)濱河市慷嗜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丹壕,老刑警劉巖庆械,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異菌赖,居然都是意外死亡缭乘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門琉用,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堕绩,“玉大人,你說我怎么就攤上這事邑时∨簦” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵晶丘,是天一觀的道長黍氮。 經(jīng)常有香客問我,道長浅浮,這世上最難降的妖魔是什么滤钱? 我笑而不...
    開封第一講書人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮脑题,結(jié)果婚禮上件缸,老公的妹妹穿的比我還像新娘。我一直安慰自己叔遂,他們只是感情好他炊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開白布争剿。 她就那樣靜靜地躺著,像睡著了一般痊末。 火紅的嫁衣襯著肌膚如雪蚕苇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評(píng)論 1 290
  • 那天凿叠,我揣著相機(jī)與錄音涩笤,去河邊找鬼。 笑死盒件,一個(gè)胖子當(dāng)著我的面吹牛蹬碧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炒刁,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼恩沽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翔始?” 一聲冷哼從身側(cè)響起罗心,我...
    開封第一講書人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎城瞎,沒想到半個(gè)月后渤闷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脖镀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年肤晓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片认然。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖漫萄,靈堂內(nèi)的尸體忽然破棺而出卷员,到底是詐尸還是另有隱情,我是刑警寧澤腾务,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布毕骡,位于F島的核電站,受9級(jí)特大地震影響岩瘦,放射性物質(zhì)發(fā)生泄漏未巫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一启昧、第九天 我趴在偏房一處隱蔽的房頂上張望叙凡。 院中可真熱鬧,春花似錦密末、人聲如沸握爷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽新啼。三九已至追城,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間燥撞,已是汗流浹背座柱。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留物舒,地道東北人色洞。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像茶鉴,于是被迫代替她去往敵國和親锋玲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容