【问题标题】:Converting Decimal to Hexadecimal and Octal将十进制转换为十六进制和八进制
【发布时间】:2011-08-21 09:26:46
【问题描述】:

展示如何用 C 写一个常量,其十进制值为 65 as

一个。一个十六进制常量
65/16 = 1 r1
1/16 = 0 r1
Hexadecimal constant = 11

湾。八进制常数(C 语言)
65/8 = 8 r1
8/8 = 1 r0
1/8 = 0 r1 Octal constant = 101

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

【问题讨论】:

  • 65/16 = 4 r1,因此(最终)65 十进制 = 41 十六进制。还要检查您对 65/8 的计算。这与其说是C 解决方案,不如说是简单的算术。你可能不需要转换C 中的常量,你只需要以不同的方式显示它们——一个重要的区别。
  • 也许我有点困惑。在寻找十六进制常数时,我们应该计算余数还是 16 进入 65 的次数?如果是前者,那么八进制常数是65/8 = 8 r18/8 = 1 r0 = 80?我想我对在哪里停下来感到困惑。
  • 您需要同时记录这两者:16 分为多少次 64,余数是多少?十进制65转八进制的问题应该更有指导意义。
  • 在我看来,问题是如何在 C 中编写这些常量,而不是如何计算它们。

标签: c decimal hex octal


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    所以 65/8 给出 8 r1 但你不要停在那里,因为结果是 8 不小于 8

    你再除以 8 得到 1

    应该是

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

    我觉得我说的太多

    【讨论】:

    • 谢谢,我认为这就是我最初在我的问题中所做的?从这里的这张表中,它说 65 十进制是 101 八进制:ascii.cl/conversion.htm
    • 是的,如果我补充说它会给你一个家庭作业问题的答案,并且一些 SO 用户认为即使你的困惑是真实的,也应该投反对票。 顺便说一句不要忘记投票并接受您认为最有用的答案。;D
    【解决方案3】:

    也许我误解了这些问题,但您似乎被问到如何在 C 中表示 hex 和 oct 常量,而不是如何实现将 dec 转换为 hex 和 oct 的算法。

    如果是这样的话:

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

    八进制数由前面的 0 表示

    int hex = 0x41;
    int oct = 0101;
    

    当然,您可以通过以十进制打印我们的值来验证这一点:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2015-12-12
      • 2015-09-06
      • 1970-01-01
      • 2013-10-22
      • 2011-07-28
      • 1970-01-01
      相关资源
      最近更新 更多