C語言進位制轉換問題,C語言中各進位制的轉換問題

時間 2022-08-17 18:25:13

1樓:匿名使用者

大數轉換成小數進位制時主要是求餘演算法,小數進位制轉換成大數進位制時要用n次方演算法。求餘後把數字儲存起來輸出就可以了。

2樓:孤舟釣客

16進位制:

0:0000

1: 0001

2;0010

3:0011

4; 0100

5: 0101

6: 0110

7: 0111

8:1000

9:1001

a:1010

b:1011

c:1100

d:1101

e:1110

f:1111

故(b5)16 -> 1011 01018進位制就是從右往左,每三個二進位制位組成一個,即 10 110 101

10 110 101 -> (2 6 5)8

3樓:

你是說人肉計算,不是程式?

一般十六進位制的十六個數對應的二進位制,有個表,0x0,->0000, 0x1<->0001....0xf<->1111,有這個表之後剩下的就是體力活了

4樓:

對應表二進位制 八進位制 十六進位制

000 0 0

001 1 1

010 2 2

011 3 3

100 4 4

101 5 5

110 6 6

111 7 7

1000 8

1001 9

1010 a

1011 b

1100 c

1101 d

1110 e

1111 f

c語言中各進位制的轉換問題

5樓:匿名使用者

0x字首表示16進位制 0x10=16

0表示8進位制 010=8

沒有表示10進位制

6樓:匿名使用者

用一個函式搞定

任意進位制間的轉換

#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);

7樓:

說點簡單的

在立即數裡面:

0x字首表示16進位制

0o表示8進位制

沒有表示10進位制

8樓:匿名使用者

問的不是很具體

如果是輸出的話在「%+字母」那裡控制

c語言中進位制數的轉化問題。

9樓:文藝小年青

十進位制是大家最熟悉的,生活中用的最多的,逢十進一。

而像二進位制,八進位制,十六進位制大致和它相似。

二進位制便是逢二進一,八進位制是逢八進一,十六進位制便是十六進一。

表示方法:

2進位制,用兩個阿拉伯數字:0、1;

8進位制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;

10進位制,用十個阿拉伯數字:0到9;

16進位制,用十個阿拉伯數字:0到9,再加a到f;

我個人覺得對初學者來說把別的進位制轉換為十進位制,再用求餘數的方法最簡單。。。

十進位制整理轉換成二進位制 將十進位制整數轉換成二進位制整數採用「除2取倒餘法」。 即將十進位制整數除以2,得到一個商和一個餘數;再將商除以2,又得到一個商和一個餘數; 以此類推,直到商等於零為止。 每次得到的餘數的倒排列,就是對應二進位制數的各位數。

其實都可以這樣算。。。

自己理解,望採納!不懂再問,我覺得你應該問點具體的。。。

10樓:匿名使用者

以十進位制數25為例子

1:變為2進位制用十短除2

25除2 商12餘1,

12除2 商6餘0,

6除2 商3餘0,

3除2 商1餘1,

1除2 商0餘1,

從下往上看餘數 便是2進株書即 十進位制25=11001,根據所得2進位制數取3位一組 即11,001不夠3位最左邊補0便是8進位制數 即11,001=31 即便是8進位制的31,

還是根據所得2進位制數分4為一組即1,1001 不夠4位最左邊補0即 0001,1001便是16進株數19 也就是十進位制數25d=11001b,25=31o,25=19x

當然反過來你應該會了把

11樓:愛慕抗命

十進位制,化為其他進位制,比如 13華為二進位制,13除以2,6餘1;6除以2,3餘0;3除以2;1餘1;所以就是把餘數倒著寫;1101(最後是1餘1,所以都要寫)。其他一樣,二進位制化十六進位制,可以先化成十進位制,或者比如:101010,從右向左四位看,因為2的四次方是16,所以,後四位1010是10,所以是a,10是2;所以是2a。

c語言程式設計 進位制轉換問題,請給出說明,謝謝。

12樓:匿名使用者

#include

int main()

//先判斷+-

while(a>=b)

//根據10進位制換成2進位制的方法可類推出10-b進位制的方法c[i]=a+'0';

for(j=i;j>=1;j--)

printf("\n");}}

13樓:篤俠

#include

#include

#define l 100

int main()

f=n>=0 ? 1 : -1;

n=abs(n);

i=0;

while(n && i=10 ? t+55 : t+48);

a[i++]=t;

}if(f==-1)

printf("-");

for(j=i-1; j>=0; j--)printf("%c",a[j]);

printf("\n");

}return 0;}

c語言進位制轉換

14樓:fu我若為王

計算機中常用的數的進位制主要有:二進位制、八進位制、十進位制、十六進位制。

2進位制,用兩個阿拉伯數字:0、1;

8進位制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;

10進位制,用十個阿拉伯數字:0到9;

16進位制就是逢16進1,但我們只有0~9這十個數字,所以我們用a,b,c,d,e,f這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。

下面用餘數短除法把十進位制數轉化為二進位制數為例進行說明

1、明確問題。舉個例子,我們現在是要將一個十進位制數字156轉換成二進位制數字。先將這個十進位制數作為被除數寫在一個倒著的「長除法」的符號裡。

把目標數系的基數(在這裡二進位制是「2」)作為除數寫在這個除法符號的外面。用這個方法將計算過程視覺化會更方便理解,因為整個計算過程只需將數字一直除以2。

2、進行除法運算。把結果的整數部分(商數)寫在長除法符號的下面,然後把它的餘數(0 或 1)寫在被除數的右邊。

我們現在是以2為除數,因此得出的商為偶數,則餘數為0;如果得出商為奇數,則餘數記為1。

3、一直往下繼續除,直到商為0為止。把每一個新的商數除以二,然後把餘數寫在被除數的右邊。直到商數為0為止。

4、寫出新的二進位制數字。從最下面的餘數開始,按順序讀到最上面。本例中,你會得到10011100。

這就是十進位制數字156的二進位制形式。或者,我們可以以腳註等式的形式表達,即:15610 = 100111002

活用這個方法可以將所有十進位制數字轉換成任何進製表達。除數為2是因為我們最終想得到的以2為基數的數(即二進位制數值) 。如果最終想得到其他數系的數字,用目標數系的基數代替這個方法裡二進位制的基數2 就可以了。

例如,要得到基數為9的數,就用9來代替2作為除數 。最終的結果就是目標數系的數字表達。

15樓:大野瘦子

1、十進位制轉二進位制

方法:十進位制的數除以2,然後取餘數,直到最後的商為0為止,然後餘數從下到上取(這個就是二進位制的數)

2、二進位制轉十進位制

方法:把二進位制數按權、相加就是十進位制數。

3、十進位制轉八進位制(類似十進位制轉二進位制的方法)

方法:十進位制的數一直除以8,直到商為0,然後倒著取餘八進位制的數。

4、八進位制轉十進位制(類似二進位制轉十進位制的方法)

方法:把八進位制的數按權,相加就是十進位制數。

5、二進位制轉八進位制

方法1:二進位制 -> 十進位制 -> 八進位制

方法2:2的3次方是8,所以,二進位制可以從個位開始,切成3個3個為一組,最高位不夠3個就補0然後每一組數就代表八進位制的一個位數。

6、八進位制轉二進位制

方法1:八進位制 -> 十進位制 -> 二進位制

方法2:八進位制每一位數進行除2取餘,如果取出來的餘數不夠3個就在最高位補0。

要掌握整型的表現形式,如下:

十進位制: 都是以0-9這九個數字組成,不能以0開頭。

二進位制: 由0和1兩個數字組成。

八進位制: 由0-7數字組成,為了區分與其他進位制的數字區別,開頭都是以0開始。

十六進位制:由0-9和a-f組成。為了區分於其他數字的區別,開頭都是以ox開始。

16樓:匿名使用者

很簡單的,

以下是各種進位制

的轉換方法:

兩個進位制(其中之一為10進位制)之間的互轉(手工計算方法)以2,10進位制互轉為例,其他請舉一反三:

二進位制數1101轉十進位制:

1×2的三次冪+1×2的二次冪+0×2的一次冪+1×2的零次冪=8+4+0+1=13

附加一個八進位制轉十進位制的例子吧:

507(八進位制轉10進位制):

5×8的2次冪+0×8的1次冪+7×8的0次冪=5×64+0×8+7×1=327(10進位制)以上是小進位制向大進位制的轉換,從2->10和8->10,下面說說大進位制向小進位制的轉換。(方法是相除去餘)

10進位制327轉八進位制:

327/8 = 40 餘數為7

40/8 = 5 餘數為0

於是八進位制數為507(第一位5是最後的商)10進位制13轉2進位制:

13/2 = 6 餘數為1

6/2 = 3 餘數為0

3/2 = 1 餘數為1

所以對應的二進位制數為1101(第一位1是最後的商)再測試一下,把307(10進位制)轉換為16進位制:

307/16 = 19 餘數為3

19/16 = 1 餘數為3

對應的16進位制數應該是:133

再把133轉回10進位制:

1×16的2次冪+3×16的1次冪+3×16的零次冪=256+48+3=307

這是程式:

#include

#define base 8 /*要轉換成幾進位制數/*#define digit 100 /*轉換數的位數/*int main(void)

return 0;

} 要轉換成16進位制只要改下base的值就有了。

C語言中強制轉換的問題,C語言強制型別轉換問題

巧 float x 你是定義的單精度型,int i 定義的是整型。i int x 是將x強制轉換成整型。整型整型,就是要整數部分,小數部分就會捨去掉。printf x f,i d n x,i 輸出時,x是以百分號f輸出,那麼就不是以整型輸出。在整數後面就會跟六位小數部分,沒有值的位數會以0補上。就像...

C語言中的問題,幾個C語言中的問題???

將憶梅僑寶 getchar和putchar是c語言中的函式 getchar從鍵盤讀入字元 putchar在螢幕上顯示字元 吳幼珊佘溶 getchar和putchar是c語言中的函式,叫作標準字元輸入輸出函式,這裡的標準表示輸入是從標準裝置輸入的,即鍵盤,輸出是從標準裝置輸出的,即顯示器。這兩個函式包...

c 語言問題?在c語言中的問題?

c 語言是c語言發展起來的,所以繼承了c語言幾乎所有的特點,但c 語言又有自己的個性。c語言是一種程序導向的程式語言,而c 主要是程序導向的,因此c 有類的概念,而c語言就沒有。c 的功能強大,編譯器複雜,適合高階程式的設計和,c語言的編譯器簡易,適合低端程式。邏輯混亂,參考正常的實現吧。c語言的基...