1. 程式人生 > >二進制轉換、字符編碼的演化、Python裏使用的編碼、浮點數、浮點數的精確度問題

二進制轉換、字符編碼的演化、Python裏使用的編碼、浮點數、浮點數的精確度問題

空格 符號 image com idt 個人 如果 數碼 mage

二進制轉換

二進制是計算技術中廣泛采用的一種數制二進制數據是用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裏使用的編碼、浮點數、浮點數的精確度問題