1. 程式人生 > >基數和權值對於各進位制之間轉換的意義

基數和權值對於各進位制之間轉換的意義

轉載地址:http://bbs.csdn.net/topics/110069313

基數,權值。


    逢n進一的n就是基數,基數為幾就有幾個數字,如二進位制基數為二,則有0,1兩個;八進位制基數為八有0,1,2,3,4,5,6,7八個。總之從0開始,最後一位位n-1。而如十六進位制等基數超過十的,從十開始為A(相當於10進位制的10),B,C,D,E,F(相當於10進位制的15)。

    權可以這樣理解,一種進位制的某一個數的每位都有一個權值m,並且權值為位數減一,如個位上的數的權值為0(位數1-1=0),十位為1(位數2-1=1)。


    各個進位制之間的轉化一般分為兩類。

    十進位制轉換為其他進位制:可以概括為“除基取餘”。如十進位制的12化為16進位制,12/16=0餘12,但十六進位制是用C來表示的,所以十進位制的10就是 12進位制的C;又如十進位制30化為十六進位制,30/16=1餘14,第二次用商14/16=0餘14,則十進位制30轉化為十六進位制為1E(由後往前取),其他類推。十進位制轉化為二進位制也是如此,如9/2=4餘1,4/2=2餘0,2/2=1餘0,1/2=0餘1,也就是1001了。10進位制轉化為其它進位制,也是一樣,但不常用,所以就不說了。


    其它進位制轉化為十進位制:可以概括為“按權展開”。知道了權值m,就可以轉化了。 首先,每一位的位數乘以基數n的m次方,如八進位制個位4,4x8^0=4(8^0等於8的0次方),百位4,4x8^2=256.最後加總。

    另外一般預設十進位制以d結尾,八進位制為o,二進位制為b,十六進位制為h。

    ================================================
    下面來練習一下:

    1.420d=( )h
    2.420h=( )d
    3.110100100b=( )d
    4.420d=( )b
    ================================================
    答案:1、1A4;2、1056;3、420;4、110100100
    ================================================

    2進位制和16進位制的轉化:有些情況中,常會遇到2進位制和16進位制轉化如果通過二進位制轉換為十進位制,再轉換為十六進位制完成,有很大麻煩,下面有一種方法,提高效率。

    二進位制到十六進位制的轉換。我們可以將二進位制數由右至左分為幾部分,每一部分有四位(因為2的4次方為16),不足四位的補0,如10111b,可分為 0001(補了3個0)和0111兩部分。然後將兩部分分別化為十六進位制,第一個是1,第二個是7。最後合起來,為17h。

    十六進位制到二進位制的轉換。同理,我們可將十六進位制的每一位,一分為四,再合併即可。如13h,分為1和3兩部分,在一分為四,0001和0011,合併去0,就是10011。

    進位制的轉化,就講到這裡,修改的一個要點,相信閣下已經掌握了。