查找最高有效位的算法

标签 algorithm search binary

<分区>

我的一个 friend 在面试中被问到以下问题:“给定一个二进制数,找到最高有效位”。我立即想到了以下解决方案,但不确定它是否正确。

即将字符串分成两部分,并将两部分都转换成十进制。如果左子数组的十进制为 0,则在右子数组中进行二进制搜索,寻找 1。

这是我的另一个问题。最高有效位是二进制数中最左边的 1 吗?你能给我举个例子吗?当 0 是最高有效位时,你能举个例子和解释吗?

编辑:

下面的答案似乎有些困惑,所以我正在更新问题以使其更准确。面试官说“你有一个网站,你从那里接收数据,直到最高有效位指示停止传输数据”你会如何告诉程序停止数据传输“

最佳答案

您也可以使用位移。伪代码:

number = gets
bitpos = 0
while number != 0
  bitpos++             # increment the bit position
  number = number >> 1 # shift the whole thing to the right once
end
puts bitpos

如果数字为零,则 bitpos 为零。

关于查找最高有效位的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17027878/

相关文章:

c++ - 大整数被误读/误写入二进制文件

c - 等距瓷砖拾取/选择算法

binary - 如何将十六进制值转换为 32 位 MIPS 指令?

c# - 将小数简化为分数的算法

整行中的pandas数据框搜索字符串

ruby - Proc.new 如何找到这段代码中的 block ?

mysql - 使用 MySQL 在 CSV 中搜索

C中十进制转二进制

javascript - 如何检查线段是否与正方形相交

algorithm - 查找四叉树中最近的相邻边