如何提取给定数字的 p MSB 位

How to extract the p MSB bits of a given number

本文关键字:数字 MSB 何提取 提取      更新时间:2023-10-16

好的,所以我正在实现一个利用乘法的哈希函数。

我得到了一个K和一个S(其中S = A * 2^单词)。我已经找到了我的 p,我需要做的就是从 KS 的乘积中提取 p 个最重要的位。
因此,假设 KS = 51,它以二进制表示为 110011,p = 4;我需要提取 4 个最重要的位,即 1100 或 12,理论上对于乘法哈希函数来说,这将是 h(k)!
我该怎么做?

一个简单的

int tempHold = k * s;
tempHold << p; 

不工作。

您可以对所述数字的对数基数 2 进行地板,以获取数字中的位数 N,然后按 (N -p) 执行右移 (>>)。这将留下 p 个最重要的位。