二進制、字節、int范圍、編碼
二進制
二進制,是計算技術中廣泛采用的一種數制,由德國數理哲學大師萊布尼茨於1679年發明。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是“逢二進一”,借位規則是“借一當二”。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用“開”來表示1,“關”來表示0。
二進制的特性其實跟我們平常使用的十進制一樣是一種數制。十進制是逢十進一,二進制是逢二進一。二進制比計算機出現得還早,二進制的只有0和1的特性剛好與電子的開關對應,於是二進制這種數制,就成為了計算機的根基。
參考資料:
https://baike.baidu.com/item/二進制/361457?fr=aladdin
位與字節(bit and byte)
每個0或1就是一個位(bit)。
字節是計算機信息技術用於計量儲存容量的一種計量方式(和長度單位一樣),作為一個單位來處理的一個二進制數字串,是構成信息的一個小單位。最常用的字節是八位的字節,即它包含八位的二進制數。
int范圍
由使用的字節數,限定的。
python2 32位 python3 超過32位后自動擴展(理論上無限)
編碼
因為計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算機在設計時采用8個比特(bit)作為一個字節(byte),所以,一個字節能表示的最大的整數就是255(二進制11111111=十進制255),如果要表示更大的整數,就必須用更多的字節。比如兩個字節可以表示的最大整數是65535
,4個字節可以表示的最大整數是4294967295
。(43億)
由於計算機是美國人發明的,因此,最早只有127個字符被編碼到計算機里,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII
編碼,比如大寫字母A
的編碼是65
,小寫字母z
的編碼是122
。
但是要處理中文顯然一個字節是不夠的,至少需要兩個字節,而且還不能和ASCII編碼沖突,所以,中國制定了GB2312
編碼,用來把中文編進去。
你可以想得到的是,全世界有上百種語言,日本把日文編到Shift_JIS
里,韓國把韓文編到Euc-kr
里,各國有各國的標准,就會不可避免地出現沖突,結果就是,在多語言混合的文本中,顯示出來會有亂碼。
因此,Unicode應運而生。Unicode把所有語言都統一到一套編碼里,這樣就不會再有亂碼問題了。
gbk
和 utf-8
是經常使用的編碼。