将十进制转换为十六进制和十六进制

将十进制转换为十六进制和十六进制

问题描述:

显示如何在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

你只需要一个while循环和一个字符串。由于这是作业,我认为我不应该多说这些。

该方法是除以基数,直到结果小于基数。

所以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

也许我误解了这些问题,但是好像你被问到在C中如何表示十六进制和八进制常量,而不是如何实现将十进制转换为十六进制和十进制的算法。

如果是这样的情况下:

十六进制数由一个前述0x或0X

辛数表示由前述0

int hex = 0x41; 
int oct = 0101; 

当然表示,可以验证这通过打印我们的十进制值:

printf("%d\n", hex); 
printf("%d\n", oct);