首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >十进制/十六进制/二进制转换

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

Stack Overflow用户
提问于 2012-02-19 08:15:19
回答 2查看 3.9K关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-19 08:30:53

你对理解数基感到高兴吗?如果不是,那么你将需要阅读这方面的知识,否则你将盲目地遵循一些规则。

很多书都会在这方面花上整整一章甚至更多的时间……

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

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

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

二进制数字的位置表示单位,2s,4s,8s,16s,32s...the的2次方

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

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

代码语言:javascript
复制
1001 binary = 1*1 + 0*2 + 0*4 + 1*8 = 9 decimal

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

代码语言:javascript
复制
1101 binary = 13 decimal = D hex

1111 0001 binary = F1 hex

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

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

例如,对于87:

2的最高幂是1,2,4,8, 16,32,64!

  • 64是2^6,因此我们在结果中将相关位设置为1:1000000 1010000

  • repeat

  • 87 - 64 = 23

  • 2的下一个小于23的最高幂是16,因此设置该位:1010000

  • repeat4,2,1
  • 1010111
  • 即64+16+4+2+1 =87表示的十进制

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

对于decimal to hex,这就像是十进制到二进制,只是你要找的是16的幂,而不是2的幂。这是最难手动完成的。

票数 2
EN

Stack Overflow用户

发布于 2012-02-19 08:22:48

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9345434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档