二進制轉換、字符編碼的演化、Python裏使用的編碼、浮點數、浮點數的精確度問題
二進制轉換
二進制是計算技術中廣泛采用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是“逢二進一”,借位規則是“借一當二”,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用“開”來表示1,“關”來表示0。
- 古時候敵人來了,如何通信呢?
②點狼煙信號,那要怎麽點呢?
來一個人點一根?來了5000人,點5000根,不用打了,自己給自己燒死了。
那就約定好,來10個人點1根,來100個人點2根,來1000個人點3根,來5000個點4根,來10000個點5根。
可是這樣又不太精確了,怎樣可以更加精確呢?
①假如有20個狼煙孔,狼煙孔點燃了代表有人,沒點燃代表沒人。這時候,1個敵人來了,點1根狼煙。
②又來了2個敵人呢?就把第一個狼煙孔滅掉,點燃第二個,這樣只點燃第二個孔就代表兩個人。
③現在來了3個敵人呢?再把第一個狼煙孔點著了就表示3個人。
④那如果來了4個人敵人,現在有兩根狼煙都點著了只能表示3個人,所以只好再點一根,同時還要滅掉前面的兩根,因為第三根這一根狼煙就可以表示4個敵人。
。。。。。。。。。。。。。。。
-
1,2,4,8,16,32,64...按照 2 的 n次方,來準確地表示敵人的數量了。
-
二進制與十進制的轉換小練習
先把他們代表的值依次寫出來,然後再根據10進制的值把數填到相應位置,就好了。
十進制轉二進制方法相同,只要對照二進制為1的那一位對應的十進制值相加就可以了。
256 128 64 32 16 8 6 4 2
1 0 1 0 1 0 1 1 0 = 342
-
使用Python內置方法-bin(n)計算
ASCII碼與二進制
-
計算機如何把文字轉換成二進制?
-
對應關系表——ASCII碼表
SCII(American Standard Code for Information Interchange,美國信息交換標準代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,並等同於國際標準ISO/IEC 646。
由於計算機是美國人發明的,因此,最早只有127個字母被編碼到計算機裏,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱為ASCII
編碼,比如大寫字母 A
的編碼是65
,小寫字母 z
的編碼是122
。後128個稱為擴展ASCII碼。
-
文字轉換為二進制
一個空格對應的數字是0 翻譯成二進制就是0(註意字符‘0‘和整數0是不同的)
一個對勾√對應的數字是251 翻譯成二進制就是11111011
-
在ASCII碼表裏,最多的字符是255位,所以我們使用8位來表示1個字符
①每一位0或者1的空間單位為bit(比特),這是計算機中“最小的表示單位”。
②8bit = 1bytes,是計算機中“最小的存儲單位”,1bytes縮寫為1B。
字符編碼的演化
-
GBK18030與GB2312與GBK1.0
-
全世界有上百種語言,日本把日文編到Shift_JIS裏,韓國把韓文編到Euc-kr裏,各國有各國的標準,就會不可避免地出現沖突,結果就是,在多語言混合的文本中,顯示出來會有亂碼。
Python裏使用的編碼
-
Python2.x 默認編碼是ASCII
Python2.x 要想修改為UTF-8 要在開頭加上 “#! -*- coding: utf-8 -*-”
- Python3.x 默認編碼是UTF-8
基本數據類型
-
浮點數
-
科學計數法
浮點數的精確度問題
-
在Python中,浮點數只能精確的存儲16位。
二進制轉換、字符編碼的演化、Python裏使用的編碼、浮點數、浮點數的精確度問題