1個字節(jié)8位,不夠8位左邊加0湊夠8位。
計算機內存存儲 0 和 1
計算機內存之中只存儲0和1(二進制)搔谴,通過硬件內存中的晶體管是否充電來存儲0和1干旁。不充電代表0驶沼,充電代表1。
縱列的8位一存争群,以橫行的8列控制回怜,當橫行和縱列同時充滿電的時候,橫縱確定的那一位為1换薄。
計算機刷新玉雾,不斷對內存中的晶體管進行充電來保持計算機的正常運行。
存儲數(shù)字
計算機之中以二進制的模式來存儲數(shù)字轻要。
所有非二進制的數(shù)字(如十六進制數(shù)复旬、八進制數(shù)、十進制數(shù))都會被轉換成二進制存儲冲泥。
存儲正整數(shù)
存儲正整數(shù)時驹碍,使用該正整數(shù)的原碼(二進制數(shù))壁涎。
存儲負整數(shù)
存儲負整數(shù)時,用其對應正數(shù)的補碼表示志秃。一個負數(shù)的補碼等于該負數(shù)的相反數(shù)的反碼加1怔球。(如:-5的補碼表示:-5對應正數(shù)5(00000101)→所有位取反(11111010)→加1(11111011))
存儲小數(shù)
存儲帶小數(shù)的數(shù)字時,正數(shù)部分按照以上規(guī)則洽损,小數(shù)部分以浮點數(shù)的形式存儲庞溜。
十進制小數(shù)轉二進制小數(shù)(1/10為底的小數(shù)轉化為1/2為底的小數(shù))
0.75(10) = 7 * 1/10 + 5 * 1/10^2
= n1 * 1/2 +n2 * 1/4
= 0.5 + 0.25
= 1 * 1/2^1 + 1* 1/2^2
= 0.11(2)
從右往左數(shù)
存儲字符
美國國家標準學會制定ASCII(美國信息交換標準代碼)(1個字節(jié)表示一個字符),將英文字符和常用符號編號表示碑定。一個相應的字符對應一個特定的十進制數(shù)流码。存儲某個字符,就存儲該字母對應ASCII值的二進制值延刘。
參考表鏈接
存儲中文字符
中國自主制定GB 2312(中國國家標準簡體中文字符集)字符集(2個字節(jié)表示一個字符)漫试,包括6763個漢字。
之后微軟推出GBK字符集碘赖,擴展GB 2312字符集驾荣,可以存儲生僻字/繁體字/日語和朝鮮語等。
存儲所有字符
Unicode聯(lián)盟將全球字符編號普泡,編成Unicode字符集(4個字節(jié)表示一個字符)播掷。
截止2016年6月,已經又128237個字符撼班。
UTF-8存儲Unicode
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼歧匈,又稱萬國碼。UTF-8用1到6個字節(jié)編碼Unicode字符.
UTF-8編碼規(guī)則:如果只有一個字節(jié)則其最高二進制位為0砰嘁;如果是多字節(jié)件炉,其第一個字節(jié)從最高位開始,連續(xù)的二進制位值為1的個數(shù)決定了其編碼的字節(jié)數(shù)矮湘,其余各字節(jié)均以10開頭斟冕。
你 -> 00000000 00000000 01001111 01100000 Unicode
你 -> 11100100 10111101 10100000 Utf-8
前3位111表示有3個字節(jié),第2個字節(jié)去掉10缅阳,第3個字節(jié)去掉10磕蛇。二進制01001111 01100000
現(xiàn)實問題
JavaScript使用UCS-2編碼
后果
- JavaScript無法表示\uFFFF之后的字符,某些情況下會出bug
- JavaScript獲取HTML某些字符的length時會多出1個長度十办。