一、正數
1. 十 -------> 二
2. 二 -------> 十
3. 十 -------> 八
4. 八 -------> 十
6. 十六------> 十
二、負數
正文:一、正數
在高速發展的現代社會,計算機浩浩蕩蕩地成為了人們生活中不可缺少的一部分,幫助人們解決通訊,聯絡,互動等各方面的問題。今天我就給大家講講與計算機有關的「進製轉換」問題。
我們以(25.625)(十)為例講解一下進製之間的轉化問題
說明:小數部份的轉化計算機二級是不考的,有興趣的人可以看一看
1. 十 -----> 二
(25.625)(十)
整數部分:
25/2=12......1
12/2=6 ......0
6/2=3 ......0
3/2=1 ......1
1/2=0 ......1
然後我們將餘數按從下往上的順序書寫就是:11001,那麼這個11001就是十進位制25的二進位制形式
小數部分:
0.625*2=1.25
0.25 *2=0.5
0.5 *2=1.0
然後我們將整數部分按從上往下的順序書寫就是:101,那麼這個101就是十進位制0.625的二進位制形式
所以:(25.625)(十)=(11001.101)(二)
十進位制轉成二進位制是這樣:
把這個十進位制數做二的整除運算,並將所得到的餘數倒過來.
例如將十進位制的10轉為二進位制是這樣:
(1) 10/2,商5餘0;
(2) 5/2,商2餘1;
(3)2/2,商1餘0;
(4)1/2,商0餘1.
(5)將所得的餘數侄倒過來,就是1010,所以十進位制的10轉化為二進位制就是1010
2. 二 ----> 十
(11001.101)(二)
整數部分: 下面的出現的2(x)表示的是2的x次方的意思
1*2(4)+1*2(3)+0*2(2)+0*2(1)+1*2(0)=25
小數部分:
1*2(-1)+0*2(-2)+1*2(-3)=0.625
所以:(11001.101)(二)=(25.625)(十)
二進位制轉化為十進位制是這樣的:
這裡可以用8421碼的方法.這個方法是將你所要轉化的二進位制從右向左數,從0開始數(這個數我們叫n),在位數是1的地方停下,並將1乘以2的n次方,最後將這些1乘以2的n次方相加,就是這個二進數的十進位制了.
還是舉個例子吧:
求110101的十進位制數.從右向左開始了
(1) 1乘以2的0次方,等於1;
(2) 1乘以2的2次方,等於4;
(3) 1乘以2的4次方,等於16;
(4) 1乘以2的5次方,等於32;
(5) 將這些結果相加:1+4+16+32=53
3. 十 ----> 八
(25.625)(十)
整數部分:
25/8=3......1
3/8 =0......3
然後我們將餘數按從下往上的順序書寫就是:31,那麼這個31就是十進位制25的八進位制形式
小數部分:
0.625*8=5
然後我們將整數部分按從上往下的順序書寫就是:5,那麼這個0.5就是十進位制0.625的八進位制形式
所以:(25.625)(十)=(31.5)(八)
4. 八 ----> 十
(31.5)(八)
整數部分:
3*8(1)+1*8(0)=25
小數部分:
5*8(-1)=0.625
所以(31.5)(八)=(25.625)(十)
5. 十 ----> 十六
(25.625)(十)
整數部分:
25/16=1......9
1/16 =0......1
然後我們將餘數按從下往上的順序書寫就是:19,那麼這個19就是十進位制25的十六進製制形式
小數部分:
0.625*16=10(即十六進製制的a或a)
然後我們將整數部分按從上往下的順序書寫就是:a,那麼這個a就是十進位制0.625的十六進製制形式
所以:(25.625)(十)=(19.a)(十六)
6. 十六----> 十
(19.a)(十六)
整數部分:
1*16(1)+9*16(0)=25
小數部分:
10*16(-1)=0.625
所以(19.a)(十六)=(25.625)(十)
如何將帶小數的二進位制與八進位制、十六進製制數之間的轉化問題
我們以(11001.101)(二)為例講解一下進製之間的轉化問題
說明:小數部份的轉化計算機二級是不考的,有興趣的人可以看一看
1. 二 ----> 八
(11001.101)(二)
整數部分: 從後往前每三位一組,缺位處用0填補,然後按十進位制方法進行轉化, 則有:
001=1
011=3
然後我們將結果按從下往上的順序書寫就是:31,那麼這個31就是二進位制11001的八進位制形式
小數部分: 從前往後每三位一組,缺位處用0填補,然後按十進位制方法進行轉化, 則有:
101=5
然後我們將結果部分按從上往下的順序書寫就是:5,那麼這個5就是二進位制0.101的八進位制形式
所以:(11001.101)(二)=(31.5)(八)
2. 八 ----> 二
(31.5)(八)
整數部分:從後往前每一位按十進位制轉化方式轉化為三位二進位制數,缺位處用0補充 則有:
1---->1---->001
3---->11
然後我們將結果按從下往上的順序書寫就是:11001,那麼這個11001就是八進位制31的二進位制形式
小數部分:從前往後每一位按十進位制轉化方式轉化為三位二進位制數,缺位處用0補充 則有:
5---->101
然後我們將結果按從下往上的順序書寫就是:101,那麼這個101就是八進位制5的二進位制形式
所以:(31.5)(八)=(11001.101)(二)
3. 十六 ----> 二
(19.a)(十六)
整數部分:從後往前每位按十進位制轉換成四位二進位制數,缺位處用0補充 則有:
9---->1001
1---->0001(相當於1)
則結果為00011001或者11001
小數部分:從前往後每位按十進位制轉換成四位二進位制數,缺位處用0補充 則有:
a(即10)---->1010
所以:(19.a)(十六)=(11001.1010)(二)=(11001.101)(二)
4. 二 ----> 十六
(11001.101)(二)
整數部分:從後往前每四位按十進位制轉化方式轉化為一位數,缺位處用0補充 則有:
1001---->9
0001---->1
則結果為19
小數部分:從前往後每四位按十進位制轉化方式轉化為一位數,缺位處用0補充 則有:
1010---->10---->a
則結果為a
所以:(11001.101)(二)=(19.a)(十六)二、負數
負數的進製轉換稍微有些不同。
先把負數寫為其補碼形式(在此不議),然後再根據二進位制轉換其它進製的方法進行。
例:要求把-9轉換為八進位制形式。則有:
-9的補碼為11110111。然後三位一劃
111---->7
110---->6
011---->3
然後我們將結果按從下往上的順序書寫就是:367,那麼367就是十進位制數-9的八進位制形式。
補充:最近有些朋友提了這樣的問題「0.8的十六進製制是多少?」
我想在我的空間裡已經有了詳細的講解,為什麼他還要問這樣的問題那
於是我就動手算了一下,發現0.8、0.6、0.2... ...一些數字在進製之間的轉化
過程中確實存在麻煩。
就比如「0.8的十六進製制」吧!
無論你怎麼乘以16,它的餘數總也乘不盡,總是餘8
具體方法如下:
0.8*16=12.8
0.8*16=12.8
. 取每乙個結果的整數部分為12既十六進製制的c
如果題中要求精確到小數點後3位那結果就是0.ccc
如果題中要求精確到小數點後4位那結果就是0.cccc
現在ok了,我想我的朋友再也不會因為進製的問題煩愁了!
下面是將十進位制數轉換為負r進製的公式:
n=(dmdm-1...d1d0)-r
=dm*(-r)^m+dm-1*(-r)^m-1+...+d1*(-r)^1+d0*(-r)^0
15=1*(-2)^4+0*(-2)^3+0*(-2)^2+1*(-2)^1+1*(-2)^0
=10011(-2)
其實轉化成任意進製都是一樣的
**
C語言中的進製轉換 itoa sprintf
在c語言中經常會遇到將二進位制 八進位制 十進位制 十六進製制等之間的相互轉換,比如 在將八進位制以二進位制的形式列印出來等。可以用c語言 stdlib.h 中的itoa函式來做這件事情。char itoa int value,char string,int radix 例如 int i char ...
c語言中的各種「零」
在 語言中,存在各種各樣的 零 例如 0 null等。下面我們就具體介紹一下這些 零 零值意義備註0 整型資料的0 0.0實型資料的0 null 指標型資料的0 記憶體的0位址,用於初始化暫時不用的指標。或是標識已經被釋放堆記憶體的指標。0 轉義字元型 ascii值為0 非可列印字元,用於標識字串結...
各種進製的轉換
請看這下面二段 10進製 2進製 string a 1195 輸入數值 biginteger src new biginteger a 轉換為biginteger型別 system.out.println src.tostring 2 轉換為2進製並輸出結果 2進製 10進製 string a 10...