【发布时间】:2013-06-06 08:16:26
【问题描述】:
我的一个朋友在一次采访中被问到以下问题:“给定一个二进制数,找到最高有效位”。我立即想到了以下解决方案,但不确定是否正确。
即,将字符串分成两部分,并将两部分转换为十进制。如果左子数组十进制为0,则在右子数组中进行二分查找,寻找1。
这是我的另一个问题。最高有效位是二进制数中最左边的 1 吗?你能给我举个例子,当 0 是最重要的位时,并给出一个例子和解释。
编辑:
下面的答案似乎有些混乱,因此我正在更新问题以使其更准确。面试官说“你有一个网站,你从那里接收数据,直到最高有效位指示停止传输数据”你会如何告诉程序停止数据传输”
【问题讨论】:
-
MSB在哪一边取决于你的CPU架构是Big-endian还是Little-endian。
-
许多平台都有一个 CountLeadingZero 操作码可以非常快速地完成此操作。这对于除法和对数以 2 为底的数学很有用。
-
例如:号码
0。此外,您需要指定负数的表示方式。 -
感谢大家的反馈,我并不是不尊重,但您所说的确实不能回答我的问题。我能问你更具体吗?谢谢
-
大多数芯片组都有some sort of instruction 来执行此操作。