gpt4 book ai didi

binary - 是否可以使用对数将数字转换为二进制?

转载 作者:行者123 更新时间:2023-12-03 23:49:34 24 4
gpt4 key购买 nike

我是一名 CS 大一新生,我发现查找二进制数的除法方式很痛苦。是否可以使用 log 快速找到 24,例如二进制?

最佳答案

如果你想使用对数,你可以


定义 log2(b) 为 log(b)/log(2) 或 ln(b)/ln(2) (它们是相同的)。

重复以下操作:

  • 定义n为log2(b)的整数部分。 b的二进制表示中的nth位置有一个1

    <
  • 设置 b = b - 2n

  • 重复第一步,直到 b = 0。


工作示例:将 2835 转换为二进制

  • log2(2835) = 11.47.. => n = 11

    二进制表示在 211 位置有一个 1。

  • 2835 - (211 = 2048) = 787

    log2(787) = 9.62... => n = 9

    二进制表示在 29 位置有一个 1。

  • 787 - (29 = 512) = 275

    log2(275) = 8.10... => n = 8

    二进制表示在 28 位置有一个 1。

  • 275 - (28 = 256) = 19

    log2(19) = 4.25... => n = 4

    二进制表示在 24 位置有一个 1。

  • 19 - (24 = 16) = 3

    log2(3) = 1.58.. => n = 1

    二进制表示在 21 位置有一个 1。

  • 3 - (21 = 2) = 1

    log2(1) = 0 => n = 0

    二进制表示在 20 位置有一个 1。

我们知道二进制表示在211、29、28中有1, 24、21 和 20 位置:

2^     11 10 9 8 7 6 5 4 3 2 1 0
binary 1 0 1 1 0 0 0 1 0 0 1 1

所以2835的二进制表示是101100010011

关于binary - 是否可以使用对数将数字转换为二进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32897519/

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