計算機使用二進制計算的原因?前面的小短文我們講了二進制,二進制的表達方式很有限,單個載體隻能表達出兩種信息在這裡,這種單個載體稱之為比特位,比特位即bit,是計算機最小的存儲單位,以0或1來表示比特位的值,對應于實際世界一個晶體管但是衆人拾柴火焰高,人多力量大,我們可以使用多個載體來傳達信息,我來為大家科普一下關于計算機使用二進制計算的原因?以下内容希望對你有幫助!
計算機使用二進制計算的原因
引言前面的小短文我們講了二進制,二進制的表達方式很有限,單個載體隻能表達出兩種信息。在這裡,這種單個載體稱之為比特位,比特位即bit,是計算機最小的存儲單位,以0或1來表示比特位的值,對應于實際世界一個晶體管。但是衆人拾柴火焰高,人多力量大,我們可以使用多個載體來傳達信息。
一個晶體管隻能表達0 和 1這兩種狀态,但是兩個晶體管可以表達4 (2的2次方 = 4) 種狀态,分别為:00、01、10、11。而三個晶體管可以表示8種狀态(2的3次方 = 8)。所以比特位的數目越多,我們可以表達的狀态和信息量就越多。
字節、字、雙字一般來說,我們把8個比特位合在一起,可以理解為實際的8個晶體管稱為一個字節,英文單詞為Byte。把兩個字節合在一起叫做字,英文單詞為Word,如果兩個字合在一起,就叫做雙字,Double Word。對應關系如下:
1字節 = 8比特
1字 = 2字節 = 16比特
雙字 = 2字 = 4字節 = 32比特
此外,就像我們有千米,千克,一樣
1 KB = 1000 Bytes
1 MB = 1000 KB
1 GB = 1000 MB
1 TB = 1000 GB
這裡我用了1000作為換算比值,這是因為商家們在賣給我們産品的時候,比如宣稱U盤有32個G,但實際上我們插到電腦裡會發現隻有29個G作業,除了一些必要的文件占用之外,還有一個原因是因為商家的換算比值與計算機内部的換算比值不同,計算機内部的換算比值為1024,即1 KB = 1024 Bytes。至于為什麼商家為什麼要這樣,這可以說是一個商業噱頭,宣傳的時候數字大點可能消費者更喜歡。因此,換算比值可以是1024也可以是1000。
如何表示數字我們現在用的是10進制,我們使用0-9這10個數字再加上很多的位數可以表達出無窮無盡的數字。為什麼158 這是數是意思是一百五十八,因為這是由8個1,5個10,1個100相加起來的數,我們會把每一位的數字乘以一個特殊的基數 這個基數會随着位置的變化而變化,從右往左開始,第一位的基數是1,第二位的基數10,它是第一位基數的10倍,第三位是100,它是第二位基數的10倍,這很簡單。
158 = 1 * 10^2 5 * 10^1 8 * 1
158 = 100 50 8 = 158
同樣的,二進制110其實是10進制中的6
110 = 1 * 2^2 1 * 2^1 0 * 1
110 = 4 2 0 = 6
在這裡,我要提一下16進制16進制是一個很重要的進制。16進制表達二進制數起來會很簡短 例如二進制數11110011表示為16進制數就是0x0F3。16進制的每一位有15種表示狀态,分别為0-9再加上英文字母A-F,以表示10到15.,并且在書寫16進制數時,最好在前面加上0x。如果數字開頭為字母,則需要加上一個0,以防混淆,例如0xF要寫成0x0F。同樣的0x0F表示10進制的15:
0x0F = 0 * 16 15 * 1 = 15
正負數表示如果需要區分正負數,那麼就需要占用額外的比特位,如果不考慮正負,那麼一個字節可以表示0到255,如果要表示正負的話,我們會選擇從左到右的第一位作為正負标記,一般規定,1代表負數,0代表正數,例如:
10000001 的含義為 -1
00000001 的含義為 1
這樣,所能表示的數的範圍就成為了-128到127。
浮點數表示浮點數包含的信息很多,根據IEEE754标準,單精度我們需要32位來存儲信息
雙精度需要64位來存儲信息。
這裡舉一個例子,625.9可以用科學計數法表示為
0.6259 * 10^3
在這裡,有三個關鍵的參數
1、 符号位(Sign) : 0代表正,1代表為負
2、指數位(Exponent):用于存儲科學計數法中的指數數據,并且采用移位存儲
3、尾數部分(Mantissa):尾數部分
具體如下圖
浮點數表示法
如何表示文字其實表示文字和表示數字差不多。直接上圖,來點感性認識:
這是一個簡單的字符打印小程序
這是一段很小的c程序,在這段程序裡,97這個數字如果輸出方式為數字,那它就是數字97,如果輸出方式為字符,那麼它就是英文小寫字母a, 98這個數字代表着小寫字母 b ,在這段程序的眼中,字符和數字沒什麼不同,本質都還是數字,這種人為規定就将字母和數字聯系了起來。
由于早期的計算機基本都是在歐美或者是其他國家發明的,對于以英語為主的國家,所需要的字符量很少,阿拉伯數字,26個英文字母還有若幹個标點符号就可以滿足基本的日常需要,這樣,把這種對應關系固定下來,就有了ASCII碼表。
美國标準信息交換代碼是由美國國家标準學會(American National Standard Institute , ANSI )制定的,标準的單字節字符編碼方案,用于基于文本的數據。起始于50年代後期,在1967年定案。它最初是美國國家标準,供不同計算機在相互通信時用作共同遵守的西文字符編碼标準,它已被國際标準化組織(International Organization for Standardization, ISO)定為國際标準,稱為ISO 646标準。适用于所有拉丁文字字母。
ASCII 碼使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字符。标準ASCII 碼也叫基礎ASCII碼,使用7 位二進制數(剩下的1位二進制為0)來表示所有的大寫和小寫字母,數字0 到9、标點符号, 以及在美式英語中使用的特殊控制字符。
——百度百科
ASCII碼對照表
中國漢字的存儲由于我們中國的漢字很特殊,每一個字都是唯一的,一般不能由其他字組合起來,不像英文單詞是由26個字母拼合起來的。因此,我們需要足夠多的數字來一一對應漢字,因此一般漢字的存儲需要兩個字節,或者說一個字,也就是16比特,
16比特可以存儲2^16次方 即 65536種信息。并且我們有自己的編碼規範。
《信息交換用漢字編碼字符集》是由中國國家标準總局1980年發布,1981年5月1日開始實施的一套國家标準,标準号是GB 2312—1980。1995年又頒布了《漢字編碼擴展規範》(GBK)。GBK與GB 2312—1980國家标準所對應的内碼标準兼容,同時在字彙一級支持ISO/IEC10646—1和GB 13000—1的全部中、日、韓(CJK)漢字,共計20902字。
随着要支持的漢字越來越多,還有适應社會的不斷發展,我們國家的編碼規範也在不斷地更新完善。
萬國碼随着世界各國的經濟文化交流越來越緊密,各國國家不能固步自封,迫切地需要一種統一的計算機字符編碼,這時,萬國碼(Unicode)出現了。
萬國碼,萬國碼,通俗的講就是全世界都通用的編碼,它為了全世界通用,采用了一種非常簡單的方法,就是将全世界所有的文字,符号都存放在一起。
Unicode 是有兩個字節、四字節之區分,UCS-4用4個字節編碼,可表示2的32次方,即4294967296種字符。
Unicode(統一碼、萬國碼、單一碼)是計算機科學領域裡的一項業界标準,包括字符集、編碼方案等。Unicode 是為了解決傳統的字符編碼方案的局限而産生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平台進行文本轉換、處理的要求。
通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或稱ISO/IEC 10646)标準所定義的标準字符集。UCS-2用兩個字節編碼,UCS-4用4個字節編碼。
資料來源特此鳴謝 The Crash Course
本篇有圖片來源于網絡,如有侵權,立即删除。
由于本篇涉及到的内容有些寬泛,因此隻能給大家一個簡單的感性認識,并沒有涉及到圖片的存儲,因此下一篇會補上。如果讀者想深入探讨,可以上網搜索相關資料,如果錯誤,望批評指正,不勝感激。