C語言的進製轉換程式,C語言進製轉換

2022-12-20 11:46:22 字數 5540 閱讀 9898

1樓:

在這裡獻醜了!

1.將你輸入的數通過字串的方式儲存是方便一下的計算的

正如你舉得例子,輸入137 陣列中存入的是 字元型的137 要將

裡面的每個字元型的數字轉換成數值型的數字就得 *p-'0',因為

字元儲存時實際儲存的是字元的asc碼, 例如 輸入 1(字元型)ascii碼為

49 若不減去0的asc碼 就會以49去參加運算

這個while迴圈是用於數制轉換的.將八進位制轉換成10進製,其實就是將8進製數碼按權,137=1*8^2+3*8^1+7*8^0

2這個while就是這個用處,一步一步看下去,加入輸入為137儲存為字元137

第一次是將字元型的1減去0的asc碼就得到了數值型的1 1本來是最高位應該是但是這裡得到的只有係數(姑且叫做係數吧而權為8^0=1),由於後面還有兩個數,這樣通過迴圈n=n*8+*p-'0';將1的權值提公升到了8^2,對第二位也類似.

3.要進行浮點數的進製轉換就得找準小數點的位置.然後按照類似的方法就可以了

2樓:匿名使用者

首先:其實一些數字這樣表達如"0""1"他指的是字串中的數字字元為了進行數字運算,必須議案將數字字元轉換為數字,用數字字元減去字元'0'的ascll碼,就得到對應的數字。

對於n=n*8+*p-'0';

要在乙個八進位制的數的最後加上一位,原來各個位上的書上公升一位,只需將原來數乘以8再加上個位數。

3樓:石水

1.理解正確

2。'0'是字元0的ascii碼,大小為48, 字元1的ascii碼是49,依次類推,可知

*p-'0'是計算當前那位上的數值。換句話說:你把那句換成n=n*8+*p-48; 效果一樣

3。例如:輸入12.56

輸出:10.718750

#include

int main()

temp+=n;

if(s[i]=='.')

printf("%lf\n",temp);

return 0;}

請問用c語言編寫乙個十進位制轉換成二進位制或八進位制或十六進製制的程式需要怎麼打?

4樓:會飛的小兔子

#include

voidmain()

inttransfer(intx)

}returny;

}擴充套件資料c語言:整數轉換十六進製制數和八進位制

#include

voidmain()

5樓:匿名使用者

int main()

while(b!=1);

c[j]=1;

printf("二進位制為: ");

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

printf("%d",c[i]);

break;

case 8:

printf("請輸入乙個十進位制:b= ");

scanf("%d",&b);

dowhile(b!=0);

printf("八進位制為: ");

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

printf("%d",c[i]);

break;

case 16:

printf("請輸入乙個十進位制:b= ");

scanf("%d",&b);

dowhile (b!=0);

printf("十六進製制為: ");

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

printf("%d",c[i]);break;

default:printf("錯誤\n");}}修改過的,望採納

c語言進製轉換

6樓: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作為除數 。最終的結果就是目標數系的數字表達。

7樓:大野瘦子

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開始。

8樓:匿名使用者

很簡單的,

以下是各種進製

的轉換方法:

兩個進製(其中之一為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的值就有了。

9樓:鐘淑珍仍癸

其實很簡單,就以下幾個點。

1、計算機是二進位制的,就是逢2進1,所以只有1、0.

2、明白位和位元組換算,計算機8個位為乙個位元組,每個位都用0或1表示,所以8個位可以表示0~256的數值,即0000

0000~1111

1111,英文本母不分大小寫佔一位元組空間,中文兩個位元組。在asc碼中,每個數值表示乙個。

3、學會換算16進製制和2進製以及10進製之間的轉換。16進製制與2進製轉換:由於16等於2的4次方,所以4個二進位制可以代表乙個16進製制的,所以8個位二進位制數就可以用2個16進製制數代替,這樣寫法簡單。

比如1111

1111可以表示為ffh,h表示16進製制。

以上基本就是所有的重要內容,純手打。

希望樓主能有所幫助

10樓:隗媛時品

#include

intmain(void)

要重複,新增迴圈就ok了。

這裡簡單的實現你的輸入和輸出功能,並沒有真正從運算規則上去進行轉換,你也沒做這樣的要求,不知道是不是你想要的結果。

11樓:鎮玟公叔仲

資料在計算機裡的儲存方式都是二進位制,對於乙個數來說,樓主一定是問怎樣用16進製制和8進製的方式顯示資料吧?

在c語言中,整形資料(int)在表示上分十進位制,八進位制,十六進製制,浮點型資料(float)在表示上分小數形式和指數形式。

若要用八進位制的方式顯示整形資料,可用下列方式:

printf("%o",變數名);

十六進製制:

printf("%x",變數名);

而在實際運算中,將乙個十進位制整數轉化為八進位制整數的方法是(以下列數為例):

60/8

商7餘4

故十進位制60為八進位制74

80/8

商10餘0

10/8商1

餘2故十進位制80為八進位制120

100/8

商12餘4

12/8

商1餘4

故十進位制100為八進位制144

十六進製制可以仿照此方法。

對於浮點型資料(就是小數),在c語言中不存在八進位制或十六進製制的說法,但實際上小數也可以轉化,只不過分整數部分和小數部分,把整數部分轉化,再把小數部分當作乙個整數轉化,然後再用小數點連線起來就可以了,比如35.625,先把35轉化為八進位制為43,再把625轉化為八進位制為1161,故35.625的8進製為43.

1161

c語言十進位制數轉化為二進位制數,C語言 十進位制數轉化為二進位制數

思路 十進位制整數轉換為二進位制整數採用 除2取餘,逆序排列 法。即用2整除十進位制整數,可以得到一個商和餘數 再用2去除商,又會得到一個商和餘數,如此進行,直到商為0時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。include stdi...

c語言二進位制表示,C語言中二進位制數字的字首是什麼?

正數,原碼補碼一樣。負數 除符號位,每位取反,然後加1。所以 1的16位表示為 11111111 11111111 有符號的負整數在記憶體中以二進位制補碼的形式存放原始碼是 10000000 00000001按位取反 符號位不變 11111111 11111110 1得到 1的補碼 11111111...

C語言將十進位制的正整數轉換為二進位制數並輸出結果

十進位制整數轉換為二進位制整數採用 除2取餘,逆序排列 法。具體做法是 用2整除十進位制整數,可以得到乙個商和餘數 再用2去除商,又會得到乙個商和餘數,如此進行,直到商為0時為止,然後把先得到的餘數作為二進位制數的低位有效位,後得到的餘數作為二進位制數的高位有效位,依次排列起來。參考 include...