不會進位轉換,你敢說你學過編程?說出來我都不信!計算機編程是用高級語言編寫的一段段代碼,他的目的方便人們編寫。不過執行代碼的計算機可是看不懂了,它只能識別0,1這兩個數字。那麼就0和1倆數字怎麼表示複雜多樣的信息呢?這就是我們今天所要講的問題——進位!而計算機,只是用的其中一種:二進位。
進位,是一種進位制度。我們要用有限的標識符來表示無窮多的信息,那麼用進位重複使用標識就顯得很重要了(假設一個數字代表一個信息)。我們小時候在學習加減法時就說滿十進一,逢十進一,這其實就是人們生活中常用的十進位。
那麼進位有哪些呢?
常見的進位有二進位、四進位、七進位、八進位、十進位、十二進位、十六進位。當然,這裡的常見這個概念不是很適當,進位這個東西是一種約定而已,目前人們在生產生活中存在的進位一定是有著他自己的實用價值。在一些情況下,一樣可以存在三進位、五進位等等。小編認為,進位其實是一種思維方式,而不是一個死板的東西,不需要有客觀實體的存在表現!
接下來,小編就主要介紹下二進位及其轉換。為了方便大家理解呢,我把十進位轉換為二進位的代碼發出來,我想這對於剛接觸編程尤其是不大了解進位的讀者好處會更大。因為進位的原理都是一樣的,希望大家能做到舉一反三!
進位介紹
二進位
基本數字:0、1
進借位規則:逢二進一;借一當二
優點:便於電子電路特別是基於計算機中計算、存儲的實現,尤其是邏輯判斷。(在許多高級程序語言中,0為假,1為真)
缺點:寫出來的數字,長,很長,很長很長。不過對於機器來說,好像並不在意哈哈。
進位轉換
進位之間的轉換是一個很重要的知識
十進位>>二進位(以19為例)
方法:我們用這個數(19)不斷地除2,會得到一個商和餘數,然後記下每次的餘數,將餘數按順序從右到左排列,直到商為0後方可結束。比如,
19/2=9...1,
9/2=4...1,
4/2=2...0,
2/2=1...0,
1/2=0...1,
大家可以發現一共有5個餘數,所以按順序從右到左排列,則為10011。值得注意的是,在看見2/2商1餘0後還要繼續除哦,不能看見除了2就以為完了。
代碼實現:
(C語言版本)
二進位>>十進位
在進位中,有一個重要的概念——位權。它指的是各位數字所表示值的與該數字本身的大小、位置的0關係。當我們將二進位轉換為十進位時,就可以利用這個關係。
位權的計算是數的每一位以進位為底,位置從左向右順序為指數的冪(序號從0開始,0,1,2,3....)。例如,十進位數123的第一位為10的0次冪,第二位為10的1次冪;二進位數101的第一位為2的0次冪,第二位為2的1次冪。而要把一個任意進位的數轉為十進位,結果就是位權乘對應數之和。如二進位數101轉為十進位為1*2^2+0*2^1+1*2^0=5。
各式進位均相通
所有進位均是相通的,只要理解了二進位的轉換,其他進位也都會了。
因為不同進位可能出現同一個數,比如十進位和八進位均有123,這個時候我們可以在數的後邊加上字母來辨別:
二進位--B;
八進位--O;
十六進位--X......