【问题标题】:Decimal/Hexadecimal/Binary Conversion十进制/十六进制/二进制转换
【发布时间】:2012-02-19 00:15:19
【问题描述】:

现在我正在准备我的 AP 计算机科学考试,我需要一些帮助来了解如何手动在十进制、十六进制和二进制值之间进行转换。我正在使用的书 (Barron's) 包含一个示例,但没有很好地解释它。

应该使用哪些公式在这些数字类型之间进行转换?

【问题讨论】:

  • 如果这是期末考试,我希望你考试不及格。也许管理更适合你?
  • 我认为你在这里误解了一些东西;我参加的考试是 Collegeboard 推出的 AP 计算机科学 A 考试。我目前在计算机科学 1 大三,我的老师到目前为止只学习了基础知识(原语、布尔代数、封装、范围、数组、数组列表等)。他根本没有处理二进制/十六进制值。我必须自学递归、GridWorld、插入和选择搜索、继承和其他概念。
  • 我认为您错误地假设每个人都知道“AP 计算机科学考试”是什么。也没有像十六进制 value 这样的东西。该值保持不变,只是为数字选择的(重新)表示。 10 和 0x0a 和 012 具有相同的值,但表示方式不同。

标签: binary hex decimal


【解决方案1】:

您对了解数字基础感到高兴吗?如果没有,那么您将需要阅读此内容,否则您将盲目地遵循一些规则。

很多书会在这方面花费一整章或更多......

二进制以 2 为底,十进制以 10 为底,十六进制以 16 为底。

所以二进制使用数字 0 和 1,十进制使用 0-9,十六进制使用 0-9,然后我们用完了,所以我们也使用 A-F。

所以小数位的位置表示单位,十、百、千……这些是“10的幂”

二进制数字的位置表示单位,2s、4s、8s、16s、32s...2的幂

十六进制数字的位置表示单位,16s,256s...16的幂

对于二进制到十进制,将每个 1 乘以其“幂”相加,因此从右到左计算:

1001 binary = 1*1 + 0*2 + 0*4 + 1*8 = 9 decimal

对于二进制转十六进制,您可以计算出十进制的总数,然后转换为十六进制,也可以将每个 4 位序列转换为单个十六进制数字:

1101 binary = 13 decimal = D hex

1111 0001 binary = F1 hex

对于十六进制到二进制,颠倒前面的例子 - 在你的脑海中做这件事并不算太糟糕,因为你只需要计算出你需要加起来的 8,4,2,1 中的哪一个得到想要的值。

对于十进制到二进制,这更像是一个长除法问题 - 找到比您的输入更小的 2 的最大幂,将相应的二进制位设置为 1,然后从原始十进制数。重复直到剩下零。

例如87:

  • 两个的最高幂是1,2,4,8,16,32,64
  • 64 是 2^6,因此我们将结果中的相关位设置为 1:1000000
  • 87 - 64 = 23
  • 小于 23 的 2 的次幂是 16,所以设置位:1010000
  • 重复 4,2,1
  • 最终结果 1010111 二进制
  • 即64+16+4+2+1 = 十进制的 87

十六进制转十进制,就像二进制转十进制,只是你乘以 1,16,256... 而不是 1,2,4,8...

对于十进制到十六进制,就像十进制到二进制一样,只是你在寻找 16 的幂,而不是 2。这是最难手动完成的。

【讨论】:

    【解决方案2】:

    这是一个非常基本的问题,其详细的答案,在入门级别上很可能是几页。试试google it :-)

    【讨论】:

      猜你喜欢
      • 2014-10-30
      • 2012-06-26
      • 2011-10-11
      • 2014-01-07
      • 2012-04-08
      • 2015-12-12
      • 2020-06-27
      • 1970-01-01
      • 2016-02-09
      相关资源
      最近更新 更多