2011-05-09 582 views
1

顯示如何在C中寫入一個常量,其十進制值爲65,如將十進制轉換爲十六進制和十六進制

a。一個十六進制常數
65/16 = 1 r1
1/16 = 0 r1
Hexadecimal constant = 11

b。一個八進制常量(以C表示)
65/8 = 8 r1
8/8 = 1 r0
1/8 = 0 r1 Octal constant = 101

這是在C中轉換常量的正確方法嗎?

+1

65/16 = 4 r1,因此(最終)65十進制= 41十六進制。檢查你的卡路里也是65/8。這不像簡單的算術那麼簡單。你可能不需要在'C'中轉換常量,你只需要以不同的方式顯示它們 - 一個*重要的*區別。 – pavium 2011-05-09 03:49:16

+0

也許我有點困惑。我們是否應該計算餘數或在尋找十六進制常數時16進入65的次數?如果它是前者,那麼八進制常數是'65/8 = 8 r1'還是'8/8 = 1 r0' ='80'?我想我很困惑到哪裏停下來。 – raphnguyen 2011-05-09 03:55:26

+0

你需要跟蹤兩者:16次分成64次,剩餘次數是多少?十進制65到八進制的問題應該更具啓發性。 – pavium 2011-05-09 04:03:19

回答

0

你只需要一個while循環和一個字符串。由於這是作業,我認爲我不應該多說這些。

0

該方法是除以基數,直到結果小於基數。

所以65/8給人8個R1,但因爲結果是8 不低於8

您可以通過8又分爲並獲得1

應該

你不要停在那裏

64分之65= 10,R 1,其中64 = 8×8 = 10進制

我不認爲我說的太

+0

謝謝,我以爲這就是我最初在我的問題中所做的事情?從這張表中可以看出,65位小數是101八進制數:http://www.ascii.cl/conversion.htm – raphnguyen 2011-05-09 04:13:54

+0

是的,如果我補充說它會給你一個作業問題的答案,還有一些SO用戶認爲即使您的困惑是真實的,也應該投下贊成票。 *順便說一下*不要忘記投票並接受你認爲最有用的答案 – pavium 2011-05-09 06:46:40

0

也許我誤解了這些問題,但是好像你被問到在C中如何表示十六進制和八進制常量,而不是如何實現將十進制轉換爲十六進制和十進制的算法。

如果是這樣的情況下:

十六進制數由一個前述0x或0X

辛數表示由前述0

int hex = 0x41; 
int oct = 0101; 

當然表示,可以驗證這通過打印我們的十進制值:

printf("%d\n", hex); 
printf("%d\n", oct); 
相關問題