【问题标题】:A question for you who work with hexadecimal frequently经常使用十六进制的您的问题
【发布时间】:2011-01-03 22:22:22
【问题描述】:

每当我使用十六进制值时,我都会在脑海中或在转换器的帮助下将其转换为十进制(如果需要)。好吧,我在想,如果你工作的时间足够长并且习惯了十六进制,你会像阅读十进制一样“看到”这个值(不管这意味着什么)吗?我的意思是你在一段时间后能够像读取基数 10 值一样容易地读取基数 16 的值吗?当我用十六进制值编写代码时,我这样做是因为它看起来很性感和坏蛋(有时是因为 8 位适合两位数,这有时会有所帮助),而不是因为我对它们感到舒服。这样我就可以知道尝试习惯十六进制是否有任何意义,以便有一天能够轻松地使用它们。

【问题讨论】:

  • 我认为这可能是一件有趣的事情。 +1 提问。
  • 您的意思是习惯于将十六进制作为一个数字系统,还是能够将它们转换为十进制?我对 EF09 + 4 没有意见,但我不能直接告诉你 EF09 是十进制的什么。
  • 我曾经是 IBM 大型机上的系统程序员,在那里您会花费大量时间查看转储文件并在脑海中进行十六进制运算。所以,是的,你确实习惯了。几年后,我可以像阅读原始源一样快地阅读转储,并且可以在转储中发现控制块。就像其他任何事情一样——如果你花很多时间做这件事,你会做得更好。也就是说,如果您不需要使用它,就没有理由这样做。
  • 享受你的十六进制练习(见下面的答案)。

标签: decimal hex


【解决方案1】:

好问题!

我认为是 Phinary http://en.wikipedia.org/wiki/Golden_ratio_base

说真的,虽然我有一位不需要反汇编程序的架构教授 - 只有一个十六进制编辑器:)

【讨论】:

    【解决方案2】:

    在处理标志时,我总是使用十六进制。在处理例如代码时字符,我总是使用十六进制。在处理实际数字时,我使用十六进制或十进制,这取决于上下文的要求。

    【讨论】:

    • 标志最好用二进制移位 1 来完成,例如 1
    • 就个人而言,我使用带有十六进制值的命名常量。也许是因为我没有将标志存储在 64 位值中 - 那时,它变成了两个独立的 32 位标志。
    • 是的,32 位可能在视觉上更容易。对,想象一下这样的 64 行:nameGHKKJH = 0x0000000000001;名称GHKASD = 0x0000000000002; ...名称GHKASD = 0x0008000000000;现在将其与:nameGHKKJH = 1
    【解决方案3】:

    大脑的工作方式,如果你用它做很多事情,它会变得更好。有些人声称“它就像一块肌肉”,但这有点过于简单了。

    所以,是的,如果您日复一日地进行十六进制转换,您最终将能够在视觉上转换相当大的数字,并且您可以进行十六进制算术而不需要转换成十进制。

    我曾经花了一个晚上来记住 pi 的前 100 位数字。

    那又怎样?

    爱因斯坦被引用为从不记住任何电话号码。他说,“这就是我有电话簿的目的。”

    这里也一样。如果你想给自己和朋友留下深刻印象,当然,为什么不呢。但这是一种心理锻炼,并不是真正有用的技能。


    在编码中,除非您主要使用汇编程序,否则您将很少使用十六进制数字。在这些数字将被扭曲的上下文中使用十六进制数字是有意义的。例如您可以通过对 0xFF 进行与运算来屏蔽一个字节。与按位移位、符号位、OR 和 XOR 相关的数字也可能在十六进制中很有意义。用于日常算术的数字通常最好用十进制表示。

    一旦你完成了客厅技巧,编程的最重要目标之一就是编写其他人(也许有一天你)可以轻松阅读和理解的代码。在正确的地方使用十六进制是好的;在错误的地方使用它是混淆和不好的。

    【讨论】:

      【解决方案4】:

      你不应该使用十六进制,因为“它看起来很性感和坏蛋(有时因为 8 位适合两位数)”。相反,请使用更合适的数字系统。

      十六进制在您使用二进制位(例如位掩码、标志等)时更合适,因为它们与二进制密切对应,并且(通过一些练习)您可以快速识别每个位十六进制数。

      十进制在处理“正常”的真实数字时更合适。

      【讨论】:

      • 嗯,是的,我实际上很少使用十六进制。想一想,几乎从来没有,因为我不做太多的按位运算。当我使用它时,主要是如果我需要保存地址或颜色。我可以用十进制写,但我只是觉得它看起来更好,如果我用十六进制写更合适。我不是那种为了炫酷而做事的人,这句话的意思更像是“我使用它,但我没有真正的论据为什么”。
      【解决方案5】:

      这是一个很棒的问题(+1 给你),就我个人而言,我使用十六进制来描述颜色,而且我每天都在使用它 15 年 - 所以现在我可以通过查看十六进制值并说诸如“那是紫红色”之类的东西。所以是的,我的想法是,如果你长时间以某种方式使用某样东西,你的大脑最终会为你弥补这个差距。

      【讨论】:

        【解决方案6】:

        我认为你不需要为了练习而练习使用十六进制数字。如果您有需要了解十六进制的考试,请练习。如果您正在面试可能需要处理协议字段或在寄存器中设置位的工作,那么请练习。

        如果您在日常编码中经常使用十六进制数字,您最终将获得您正在寻找的忍者技能。如果您不经常使用它们,那么您可能不需要这些技能。我不会强迫它。

        【讨论】:

          【解决方案7】:

          多年前,我主要从事汇编工作,并决定需要学习 Hex(乘法和加法表)的基本知识。所以我写了几张图表,贴在墙上,开始学习。我的经理走过,问我他们是什么,然后告诉我出去买一个十六进制计算器!我从来没有了解过这些事实,但我不禁觉得在这种情况下这样做是个好主意。而且我认为这样做也不会太难。

          话虽如此,我同意其他答案 - 在正确的上下文中使用 Hex,主要目的应该是使代码易于理解。

          【讨论】:

            【解决方案8】:

            您可能会感兴趣,octal system 是瑞典国王查理十二世发明的,他一心想将它们强加给这个国家,但两年后却发生了可怕的死亡事件。

            【讨论】:

            • 是的,从未恢复过。好难过。当二进制计算机出现时,我们本可以为它们做好准备。哎呀,也许差分引擎和分析引擎可以使用二进制(或八进制)数字,使它们变得更加简单,因此查尔斯巴贝奇实际上可以完成后者,而计算机时代可以从蒸汽计算机开始!
            【解决方案9】:

            对不起。我内心的极客接管了。

            我必须给你做这个。

            http://pap.centelia.net/

            这是一个小小的 Javascript 游戏,我想帮助你成为 ol' 十六进制的坏蛋。

            是的,你可以作弊,但这不是重点!

            【讨论】:

              【解决方案10】:

              如果您使用十六进制的时间足够长,您最终会习惯它,是的。就像你小时候习惯了十进制一样。例如,当您因为“pi 不等于 3.243f6a88...”或诸如此类的东西而未能通过数学课程时,请不要抱怨。

              另外,@oefe,十进制在处理“正常”现实生活中的数字时并不更合适,它只是更受欢迎。

              【讨论】:

                猜你喜欢
                • 2014-01-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2019-03-12
                • 2021-08-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多