首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字系统转换

数字系统转换
EN

Software Engineering用户
提问于 2018-10-02 05:18:39
回答 4查看 255关注 0票数 -4

为什么我们不能直接把八进制数转换成基数8到十六进制基16呢?我们可以先把八进制转换成二进制等价,或者把它转换成十进制等价。但是为什么我们不能直接将基8八进制转换为16十六进制呢?

EN

回答 4

Software Engineering用户

发布于 2018-10-02 05:45:17

您可以通过连续除以020,与小数点一样。比方说,您有0137357 (从这里省略简短的前缀):

代码语言:javascript
复制
137357 / 20 = 5756 remainder 17 = 0xf
5756   / 20 =  276 remainder 16 = 0xe
276    / 20 =   13 remainder 16 = 0xe
13 < 20, so highest digit is      0xb
0xbeef
票数 4
EN

Software Engineering用户

发布于 2018-10-02 05:45:56

您可以直接进行这种转换--但是要意识到,当字符的数字序列被解释为数字时,八进制、十六进制和十进制是字符串的属性。因此,八进制表示不能有效地存储一个数字;虽然十六进制更好,但它仍远不如本机数字存储机制有效。

在CPU内部,整数格式(例如32位、64位、其他的)数字只是数字。处理器将使用二进制位将它们存储为数字,但这对本文的讨论并不十分重要。重要的是固定大小与可变大小,以及数字的原生存储与它们在字符串中的表示形式。

票数 3
EN

Software Engineering用户

发布于 2018-10-02 05:46:05

您可以直接从八进制转换为十六进制。作为蛮力解决方案,创建一个12位查找表,索引到具有四个八进制数字的表中,取出三个十六进制数字。其他空间密集的解决方案也存在。

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

https://softwareengineering.stackexchange.com/questions/379312

复制
相关文章

相似问题

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