十进制/十六进制/二进制转换

发布于 2025-01-06 18:22:05 字数 124 浏览 1 评论 0原文

现在我正在准备 AP 计算机科学考试,我需要一些帮助来了解如何手动在十进制、十六进制和二进制值之间进行转换。我正在使用的书(《巴伦周刊》)包含一个示例,但解释得不是很好。

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

Right now I'm preparing for my AP Computer Science exam, and I need some help understanding how to convert between decimal, hexadecimal, and binary values by hand. The book that I'm using (Barron's) includes an example but does not explain it very well.

What are the formulas that one should use for conversion between these number types?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

£噩梦荏苒 2025-01-13 18:22:05

您对了解数基感到高兴吗?如果没有,那么您将需要阅读本文,否则您将只是盲目地遵循一些规则。

很多书会花一整章或更多的时间来讨论这个...

二进制是以 2 为基数,十进制是以 10 为基数,十六进制是以 16 为基数。

所以二进制使用数字 0 和 1,十进制使用 0-9,十六进制使用 0-9 和然后我们就用完了,所以我们也使用自动对焦。

因此,十进制数字的位置表示个位、十、百、千……这些是“10 的幂”。

二进制数字的位置表示个位、2、4、8、16、32…… 这些是“10 的幂”。 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,然后从原始十进制数中减去该2的幂。重复直到剩下零。

例如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。这是最难手动完成的。

Are you happy that you understand number bases? If not, then you will need to read up on this or you'll just be blindly following some rules.

Plenty of books would spend a whole chapter or more on this...

Binary is base 2, Decimal is base 10, Hexadecimal is base 16.

So Binary uses digits 0 and 1, Decimal uses 0-9, Hexadecimal uses 0-9 and then we run out so we use A-F as well.

So the position of a decimal digit indicates units, tens, hundreds, thousands... these are the "powers of 10"

The position of a binary digit indicates units, 2s, 4s, 8s, 16s, 32s...the powers of 2

The position of hex digits indicates units, 16s, 256s...the powers of 16

For binary to decimal, add up each 1 multiplied by its 'power', so working from right to left:

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

For binary to hex, you can either work it out the total number in decimal and then convert to hex, or you can convert each 4-bit sequence into a single hex digit:

1101 binary = 13 decimal = D hex

1111 0001 binary = F1 hex

For hex to binary, reverse the previous example - it's not too bad to do in your head because you just need to work out which of 8,4,2,1 you need to add up to get the desired value.

For decimal to binary, it's more of a long division problem - find the biggest power of 2 smaller than your input, set the corresponding binary bit to 1, and subtract that power of 2 from the original decimal number. Repeat until you have zero left.

E.g. for 87:

  • the highest power of two there is 1,2,4,8,16,32,64!
  • 64 is 2^6 so we set the relevant bit to 1 in our result: 1000000
  • 87 - 64 = 23
  • the next highest power of 2 smaller than 23 is 16, so set the bit: 1010000
  • repeat for 4,2,1
  • final result 1010111 binary
  • i.e. 64+16+4+2+1 = 87 in decimal

For hex to decimal, it's like binary to decimal, only you multiply by 1,16,256... instead of 1,2,4,8...

For decimal to hex, it's like decimal to binary, only you are looking for powers of 16, not 2. This is the hardest one to do manually.

々眼睛长脚气 2025-01-13 18:22:05

这是一个非常基本的问题,其入门级的详细答案很可能需要几页纸。尝试Google 搜索 :-)

This is a very fundamental question, whose detailed answer, on an entry level could very well be a couple of pages. Try to google it :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文