十進制小數部分和負數轉化其他進制
十進位制小數部分轉化為二進制小數,
如果既有整數,又有小數部分,要分開計算,整數部分除2取餘逆向排列餘數〈轉化八、十六進制順便換除8、除16逆向取餘,商為0時中止計算),小數部分乘2取整順向排列取整數部分。
十進制的整數部分轉換二進制,利用除2取餘倒記法,但是十進制小數部分轉化采用乘2取整順記法〈轉化八、十六進制順便換乘8、乘16順向取整,小數部分為0時中止計算,不為0時根據2^(-n)比十進制小數多一位時中止計算)。
十進制小數部分轉成二進制,十進制的小數轉換為二進制小數,主要是利用小數部分乘2,取整數部分,直至小數點後為0,或者達到所要求的精度為止。把取出的整數部分按順向序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。
例:十進制的0.125轉化成二進制。
将小數部分0.125乘2,積0.25取整數部分0。
用剩餘的小數部分0.25乘2,積0.5取整數部分0,
将剩餘的小數部分0.5乘2,積1取整數部分1。
此時,小數部分已經為0,則計算結束,0.125的二進制數将所得取整數按順序排列,得到0.001。
驗證一下是否為0.125,0 0 1*2^(-3)=0.125
如果小數部分一直不變為0,可根據精度要求中止計算。
有的小數乘2以後,小數部分一直無法得到0,如0.835乘2後小數部分就一直變不成0,這時隻需根據一定的精确度中止計算,按順向取整數,反向驗證能滿足十進位小數點位數精度要求即可,比十進制數要求位數多取一位即可,如8、16位制向小數方向再多進一位,相加不影響前面數字變化,不需要多進一位,隻需當前位2^(-n)次方小數位比十進位數多一位小數位,精度可滿足要求。8、16位制換算時8^(-n)或16^(-n)小數位比十進制多一位小數位。
對負的十進制數轉化二進制數,以十進制-17d(d表示十進制,b表示二進制)為例
十進位數17轉為二進制數
17除2商8餘1,8除2商4餘0,4除2商2餘0,2除2商1餘0,1除2商0餘1,直到商為0時中止,餘數倒排,十進制17的二進制數為10001。
十進位數一17d轉為二進制數
-17d=-10001b,将絕對值-10001補全至一個字節8位:00010001,然後取反得:11101110,加1後得:11101111,它就是-17的8位二進制轉換數(負數二進制轉換數就是轉換成二進位數,取反得到二進制補碼)。
十進制轉換成二進制的步驟為:125d(d表示十進制數)
125除以2商62餘1,
62除以2商31餘0,
31除以2商15餘1,
15除以2商7餘1,
7除以2商3餘1,
3除以2商1餘1,
1除以2商0餘1,直至商為0中止,所有餘數逆向排列,逆向順序取值,即1111101,也可用0補足8位一個字節為01111101。
下面驗證一下二進位數01111101是否為125d。
第一位為1,二位為2,三位2^2,四位2^3,每增加一位多乘以一個2。
1 2^2 2^3 2^4 2^5 2^6=125。
取數進行相加的位置為1,其它位置為0。
十進制轉換成八進制
對十進制數整數部分除以8(小數部分,利用小數部分乘8,取整數部分,直至小數點後小數部分為0,或者達到所要求的精度為止,順向取數)取每次的餘數部分,直到得到的商為0。小數部分乘以8,取出每次結果的整數部分,直到最後的小數部分為0中止計算。
125除以8商15餘5,
15除以8商1餘7,
1除以8商0餘1,直至商為0中止,所有餘數逆向排列,逆向順序取值,即175,也可用0補足8位一個字節為00000175。
下面驗證一下八進位數175是否為125d。
第一位為1,二位為8,三位8^2,四位8^3,每增加一位多乘以一個8。
5 7*8 1*8^2=125。
取數進行相加的位置為1~7,其它位置為0。
十進制轉換成十六進制
對十進制數整數部分除以16(小數部分,利用小數部分乘16,取整數部分,直至小數點後為0,或者達到所要求的精度為止,順向取數)取每次的餘數部分,直到得到的商為0。小數部分乘以16,取出每次結果的整數部分,直到最後的結果為0。
125除以16商7餘13,
7除以16商0餘7,
直至商為0中止,所有餘數逆向排列。
十六進制英文名稱:Hex number system,是計算機中數據的一種表示方法。同我們日常中的十進制表示法不一樣。它由0-9,A-F組成。與10進制的對應關系是:0-9對應0-9,A-F對應10-15,N進制的數可以用0---(N-1)的數表示,超過9的用字母A-F。B在16進制中序數為11,1~9對應1~9,A~F對應10~15。
這裡逆向順序取值,13用D表示,即7D,也可用0補足8位一個字節為0000007D。
下面驗證一下十六進位數7D是否為125d。
第一位為1,二位為16,三位16^2,四位16^3,每增加一位多乘以一個16。
13 7*16=125。
二進制轉化
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!