求十進位制二進位制八進位制十六進製制之間小數的轉換。注意是小數的轉換。謝謝了。求詳細解答。通俗易懂

2021-03-24 01:32:57 字數 6108 閱讀 7230

1樓:匿名使用者

小數 十進位制轉二進位制:十進位制小數乘以2,整數部分為二進位制小數點後第一位,小數部分再乘以2,整數部分為二進位制小數點後第二位,以此類推...

例如:十進位制小數0.1875:0.1875×2=0.375 『二進位制0.0

0.375×2=0.75 』二進位制0.00

0.75×2=1.5 』二進位制0.001

0.5×2=1.0 』二進位制0.0011

所以 十進位制小數0.1875對應二進位制小數為0.0011

然後二進位制小數轉換為八進位制和十六進製制比較簡單:

二進位制小數轉化為八進位制小數:以小數點為基準,向後三個一組,不足補0

例如 0.0011=0. 001 100 將各組轉換為十進位制數字即為所得八進位制小數

0.0011=0. 001 100->0.14(八進位制)

二進位制小數轉化為十六進製制小數:以小數點為基準,向後四個一組,不足補0

例如 0.0011=0. 0011 將各組轉換為十進位制數字即為所得十六進製制小數

0.0011=0. 0011->0.3(十六進製制)

2樓:匿名使用者

有2種方法,可以直接用計算機輸出,可以手動計算1、先來最簡單的,下邊是在vc6.0用c語言寫成的,就是使用格式符輸出%d為10進製,%o為8進製,%x為16進製制#includemain()有缺點就是小數和2進製轉換不了2、手動轉換,括號外的表示進製是標記,(10)2,表示2進製碼10r進製數→十進位制數:使用按權相加法,即將各位進製數碼與它對應的權相乘,其積相加,和數即為與該r進製數相對應的十進位制數。

十進位制數→r進製數:整數的轉換:採用除r取餘法。

從最後一次除得餘數讀起(即從高位到低位)。小數部分的轉換:採用乘r取整法,將所得小數從第一次乘得整數讀起,就是這個十進位制小數所對應的r進製小數例1:

求(1100101.101)2的等值十進位制數。分析:

使用按權相加法,即將各位進製數碼與它對應的權相乘,其積相加,和數即為與該r進製數相對應的十進位制數。1100101.101)2=1×26+1×25+0×24+0×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3=64+32+0+0+4+0+1+0.

5+0.125=(101.625)10即(1100101.

101)2=(101.625)10例2:求(66.

625)10等值二進位制數分析:將此數分成整數和小數兩部分分別轉換,然後再拼接起來。解:

先求(66)10的等值2進製,用除2取餘法:66/2=33餘0,33/2=16餘1,16/2=8餘0,8/2=4餘0,4/2=2餘0,2/2=1餘0,1/2=1餘1即(66)10=(1000010)2再求小數部分0.625×2=1.

25010.250×2=0.50000.

500×2=1.0001即(0.625)10=(0.

101)2(66.625)10=(1000010.101)2注意:

十進位制小數不一定都能轉換成完全等值的二進位制小數,所以有時要取近似值,有換算誤差存在這裡只有先把其他進製轉換為10進製,再轉換為其他進製的,其實還有更簡單的,**分吧,哈哈

關於八進位制、十六進製制(小數部分)轉換二進位制如何換算?

3樓:去問驅蚊器

常規的演算法就是統統轉10進製再轉成對應的,只不過整數部分是一直除,小數部分是一直乘。但是對於2、8、16進製制之間互相轉化不需要這麼麻煩,不管是小數還是整數部分,說乙個快速轉化的方法。

8、16要轉成二進位制非常容易,只要把每一位都轉成二進位制整個串起來就行,只不過8進製每一位轉3位2進製,16進製制每次轉4位。

擴充套件資料

在進行進製轉換時有一基本原則:轉換後表達的「量」的多少不能發生改變。二進位制中的111個蘋果和十進位制中的7個蘋果是一樣多的。

十進位制中的數字排列是這樣的…… 萬 千 百 十 個 十分 百分 千分……

r進製中的數字排列是這樣的……r^4 r^3r^2 r^1 r^0 r^-1 r^-2 r^-3……

可以看出相鄰的數字間相差進製的一次方。

對10進製,從低位到高位,依次要乘以10^0,10^1,10^2,10^3……,也就是1、10、100、1000

對2進製,從低位到高位,依次要乘以2^0,2^1,2^2,2^3……,也就是1、2、4、8、……

如何用c語言把十進位制純小數轉換成二進位制,八進位制,十六進製制。求**?謝謝

4樓:最愛佳偶天橙

#include

#include

#include

/*該函式可以實現小於整型資料的任意進製之間轉換*//*以下函式將a進製數s轉換成b進製並輸出*/void f(int a,int b,char s)for(i=0;t!=0;i++) /*再轉換成b進製*/r[i]='\0';

s=strrev(r);

printf("%s",s);}

純小數數制轉換 要求(1)實現十進位制純小數向二進位制、八進位制、十六進製制純小數的轉換(2)若小數部分

5樓:匿名使用者

a為十進位制小數,x為要轉換的進製。供參考。

#include

void main()}

十進位制小數與八、十六進製制小數互轉方法

6樓:老石猴

十進位制整數轉換r進製(r可以是任何整數,比如3、5、7)整數,方法就是除r取餘,十進位制轉八或十六進製制方法類似轉二進位制,除以基數取餘就行了,比如轉八進位制就除8,轉十六進製制就除16。

二進位制和八進位制、十六進製制之間轉換採用的是分組轉換法,因為2、8、16之間是存在冪的關係的。所以,二級制轉八進位制,以小數點為中心向兩邊(二進位制小數也可以轉為八進位制小數)分組,每3位為一組,因為2的3次方=8,然後將各組直接寫成相應的八進位制數就可以了(3位二進位制數最大是7,不會超過8)。轉十六進製制類似,只是這時候需要每4位分一組。

反過來,八進位制、十六進製制轉二進位制就簡單了,只要把每一位都寫成二進位制數就行了。八進位制和十六進製制之間一般借助二進位制來轉換,不容易出錯。

十進位制小數轉r進製小數,方法為乘r取整,每次乘以相應之後基數後取結果的整數部分即可。需要注意的是並非所有的十進位制小數都能完全轉化為r進製小數,這時就需要取近似值。

二進位制(包括小數)轉為十進位制數時,採用乘權相加法,每一位數乘以相應位的權制然後相加就ok。比如1101.101這個數,以小數點為中心,向左每位權值分別為1、2、4、8,向右每位為0.

5、0.25、0.125(也就是二分之

一、四分之

一、八分之一)。正數1101.101b=1*1+0*2+1*4+1*8(整數部分)+1*0.

5+0*0.25+1*0.125(小數部分)=13.

625d。八進位制、十六進製制轉十進位制方法類似,只要你搞清楚每位的權值就行了。

如此詳細,得分當之無愧。

二進位制,八進位制,十進位制,十六進製制之間怎麼轉換

7樓:匿名使用者

一。進製概念

1。 十進位制

十進位制使用十個數字(0、1、2、3、4、5、6、7、8、9)記數,基數為10,逢十進一。

歷史上第一台電子數字計算機eniac是一台十進位制機器,其數字以十進位制表示,並以十進位制形式運算。設計十進位制機器比設計二進位制機器複雜得多。而自然界具有兩種穩定狀態的元件普遍存在,如開關的開和關,電路的通和斷,電壓的高和低等,非常適合表示計算機中的數。

設計過程簡單,可靠性高。因此,現在改為二進位制計算機。

2。 二進位制

二進位制以2為基數,只用0和1兩個數字表示數,逢2進一。

二進位制與遵循十進位制數遵循一樣的運算規則,但顯得比十進位制更簡單。例如:

(1)加法:0+0=0 0+1=1 1+0=1 1+1=0

(2)減法:0-0=0 1-1=01-0=1 0-1=1

(3)乘法:0*0=0 0*1=01*0=0 1*1=1

(4)除法:0/1=0 1/1=1,除數不能為0

3。 八進位制

所謂八進位制,就是其基數為8,基數值可以取0、1、2、3、4、5、6、7共8個值,逢八進一。

八進位制與十進位制運算規則一樣。那麼為什麼要用八進位制呢?難道要設計八進位制的計算機麼?

實際上,八進位制與十六進製制的引用,主要是為了書寫和表示方便,因為二進位制表示位數比較長。如:(1024)10 用二進位制表示為 (10000000000)2,共有11個數字,用八進位制表示為(2000)8。

更重要的是,由於二進位制與八進位制存在在一種對等關係,每三位二進位制與一位八進位制數完全對等(23=8)。所以二進位制和十進位制在運算上無區別,而時進製不具備這一優點。

4。 十六進製制

十六進製制應用也是非常廣泛的一種計數制。在使用者看來,十六進製制是二進位制數的一種更加緊湊的一種表示方法。

基數為:0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f,逢十進一。在十六進製制系統中,數值為10到15的數分別用a、b、c、d、e、f表示。

二進位制數及與之等值的八進位制、十進位制和十六進製制數

二進位制 八進位制 十進位制 十六進製制

0000 0 0 0

0001 1 1 1

0010 2 2 2

0011 3 3 3

0100 4 4 4

0101 5 5 5

0110 6 6 6

0111 7 7 7

1000 10 8 8

1001 11 9 9

1010 12 10 a

1011 13 11 b

1100 14 12 c

1101 15 13 d

1110 16 14 e

1111 17 15 f

二。進製轉換

1。二進位制與十進位制數間的轉換

(1)二進位制轉換為十進位制

將每個二進位制數按權後求和即可。請看例題:

把二進位制數(101.101)2=1*22+0*21+1*20+1*2-1+0*2-2+1*2-3=(5.625)10

(2)十進位制轉換為二進位制

一般需要將十進位制數的整數部分與小數部分分開處理。

整數部分計算方法:除2取餘法請看例題:

十進位制數(53)10的二進位制值為(110101)2

小數部分計算方法:乘2取整法,即每一步將十進位制小數部分乘以2,所得積的小數點左邊的數字(0或1)作為二進位制表示法中的數字,第一次乘法所得的整數部分為最高位。請看例題:

將(0.5125)10轉換成二進位制。(0.5125)10=(0.101)2

2。 八進位制、十六進製制與十六進製制間的轉換

八進位制、十六進製制與十六進製制之間的轉換方法與二進位制,同十進位制之間的轉換方法類似。例如:

(73)8=7*81+3=(59)10

(0.56)8=5*8-1+6*8-2=(0.71875)10

(12a)16=1*162+2*161+a*160=(298)10

(0.3c8)16=3*16-1+12*16-2+8*16-3=(0.142578125)10

十進位制整數→→→→→八進位制方法:「除8取餘」

十進位制整數→→→→→十六進製制方法:「除16取餘」 例如:

(171)10=(253)8

(2653)10=(a5d)16

十進位制小數→→→→→八進位制小數 方法:「乘8取整」

十進位制小數→→→→→十六進製制小數方法:「乘16取整」例如:

(0。71875)10=(0.56)8

(0.142578125)10=(0.3c8)16

3.非十進位制數之間的轉換

(1)二進位制數與八進位制數之間的轉換

轉換方法是:以小數點為界,分別向左右每三位二進位制數合成一位八進位制數,或每一位八進位制數展成三位二進位制數,不足三位者補0。例如:

(423。45)8=(100 010 011.100 101)2

(1001001.1101)2=(001 001 001.110 100)2=(111.64)8

2。二進位制與十六進製制轉換

轉換方法:以小數點為界,分別向左右每四位二進位制合成一位十六進製制數,或每一位十六進製制數展成四位二進位制數,不足四位者補0。例如:

(abcd。ef)16=(1010 1011 1100 1101.1110 1111)2

(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5b4b。68)16

十進位制二進位制還有八進位制十六進製制中的dboh分

這四個字母分別代表不同進製的字尾 區別如下 d decimal 表示這個數是十進位制 b binary 表示這個數是二進位制 o octor 表示這個數是八進位制 h hex 表示這個數是十六進製制 擴充套件資料 進製之間可以相互轉換,具體方法如下 1 二進位制數 十六進製制數轉換為十進位制數 用按...

二進位制,八進位制,十進位制,十六進製制之間的相互轉換方法

這是我自己製作的進製轉換文件 你可以去看看 有詳細的步驟 如果講軟體處理 變數中的值都是以二進位制儲存的,不能用其他進製。如果要輸出為字串,可以用函式轉換。如果講數制表示 我們平時書寫的數僅僅寫出了表示式的係數,是簡寫法。標準書寫如下 比如乙個數寫為 321。十進位制321 3x10 2 2x10 ...

八進位制十六進製制的優點二進位制十進位制八進位制十六進製制各代表的英文本母是什麼

首先,計算機採用二進位制 即0,1 用二進位制 有很多有點,比方說在邏輯運算子中0代表假,非0代表真 在邏輯電路中,0和1各代表導通或者不通 各個電路0和1代表的不一樣 而十進位制顯然沒有這個優點 另外2進製數和8進製數,16進製制數之間轉換相當方便,譬如二進位制轉8進製每三位轉一數,二進位制轉16...