Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将十进制转换为十六进制和八进制_C_Decimal_Hex_Octal - Fatal编程技术网

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

C 将十进制转换为十六进制和八进制,c,decimal,hex,octal,C,Decimal,Hex,Octal,演示如何在C中写入十进制值为65的常量,如下所示 a。十六进制常数 65/16=1 r1 1/16=0 r1 十六进制常数=11 B八进制常数(C) 65/8=8 r1 8/8=1 r0 1/8=0 r1 八进制常数=101 这是转换C中常量的正确方法吗?您只需要一个while循环和一个字符串。由于这是家庭作业,我想我不应该说得更多。方法是除以基数,直到结果小于基数 所以65/8给出了8r1,但你不能到此为止,因为结果是8不小于8 再除以8得到1 应该是 65/64=10 r 1,其中64=8x

演示如何在C中写入十进制值为65的常量,如下所示

a。十六进制常数
65/16=1 r1
1/16=0 r1
十六进制常数=11

B八进制常数(C)
65/8=8 r1
8/8=1 r0
1/8=0 r1 八进制常数=101


这是转换C中常量的正确方法吗?

您只需要一个while循环和一个字符串。由于这是家庭作业,我想我不应该说得更多。

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

所以65/8给出了8r1,但你不能到此为止,因为结果是8不小于8

再除以8得到1

应该是

65/64=10 r 1,其中64=8x8=八进制10


我认为我没有说太多

也许我误解了这些问题,但似乎有人在问你如何在C中表示十六进制和oct常量,而不是如何实现将dec转换为十六进制和oct的算法

如果是这样的话:

十六进制数由前面的0x或0x表示

oct编号由前面的0表示

int hex = 0x41;
int oct = 0101;
当然,您可以通过打印十进制值来验证这一点:

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

65/16=4R1,所以(最终)65十进制=41十六进制。同时检查65/8的计算结果。这与其说是一个
C
解决方案,不如说是一个简单的算法。您可能不需要在
C
中转换常量,只需要以不同的方式显示它们——这是一个重要的区别。也许我有点困惑。在寻找十六进制常数时,我们应该数数余数,还是16乘以65?如果是前者,那么八进制常数会是
65/8=8r1
8/8=1r0
=
80
?我想我不知道该在哪里停下来。你需要跟踪这两个方面:16除以64有多少次,其余的是什么?十进制65到八进制的问题应该更有启发性。对我来说,这听起来像是在问如何用C写这些常数,而不是如何计算它们。谢谢,我想这就是我最初在问题中所做的?从这张表上看,它说65位小数是101位八进制:是的,如果我加上它,它会给你一个家庭作业问题的答案,所以有些用户认为,即使你的困惑是真的,也应该投反对票。顺便说一句,别忘了投票,接受你认为最有用的答案。;D