gpt4 book ai didi

numbers - 在不同的基数之间转换数字是否有任何实际用途?

转载 作者:行者123 更新时间:2023-12-01 23:01:19 29 4
gpt4 key购买 nike

我知道我们需要将十进制、八进制和十六进制转换为二进制,但是我对十进制到八进制或八进制到十六进制或十进制到十六进制的转换感到困惑。
我们为什么以及在哪里需要这些类型的转换?

最佳答案

不同的基础适用于不同的目的。

  • 十进制显然是大多数人知道如何处理的,因此有利于向最终用户输出实际数量。
  • Hex 很短,并且每字节恰好有 2 个字符的偶数比率,因此它非常适合以可键入的格式表示大数字,例如 SHA1 哈希或私钥等,特别是因为这些数字并不真正代表一个数量,所以用户不需要能够将它们理解为数字。
  • 八进制主要是出于遗留原因——例如,UNIX 文件权限代码传统上表示为八进制数,例如,因为每个数字的三位与 UNIX 权限编码方案的每个用户类别的三位很好地对应。

  • 有时,出于需要另一种基数的目的,人们会希望在一个基数中使用数字。因此,各种转换功能可用。然而,实际上,我的经验是,在实践中,您几乎从不从一个基数转换为另一个基数,除非将数字从某个非二进制基数转换为二进制数(以您选择的语言的 native 整数类型的形式)并退出进入您需要输出的任何基础。大多数情况下,从一个非二进制基数到另一个非二进制基数是在学习基数并了解不同基数中的数字是什么样子时,或者在使用十六进制输出进行调试时。即便如此,如果计算机这样做,主要的方法是转换为二进制然后返回,因为当前的计算机只是天生擅长处理基数为 2 的数字,而不太擅长处理其他任何事情。

    您看到实际以十进制存储和操作的数字的一个重要位置是在某些金融应用程序或其他重要的地方,保留“小数位数”级别的精度很重要。有时定点算术可以用于货币,但并非总是如此,如果它不使用二进制浮点数是一个坏主意。较旧的系统实际上已经以二进制编码 - 十进制算术的形式内置了对此的支持。在 BCD 中,每 4 位充当一个十进制数字,因此您放弃了每 4 位存储的一个块,以换取在非计算世界的选择基础中保持您的精度水平。

    奇怪的是,其他基础的一个常见用例有点隐藏。支持大量数字的现代语言(例如 Python 2.x 的 long 类型或 Java 的 BigIntegerBigDecimal 类型)通常会将数字内部存储在一个数组中,每个元素都是某个基数中的数字。然后他们在该基数的数字串上实现他们支持的数学。真正有效的 bigint 实现实际上可能使用接近 2^(机器原生字大小中的位)的基数;一个基数为 2^64 的数字显然不可能以这种形式有效地输出,但是以这种大小的块进行计算最终可以充分利用空间和 CPU。 (我不知道这是否是最好的基数;最好使用一半位数的基数来简化从一个数字到下一个数字的溢出处理。自从我编写自己的 bigint 以来已经有一段时间了,我从未实现过乘法和除法的更快/更复杂的版本。)

    关于numbers - 在不同的基数之间转换数字是否有任何实际用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672604/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com