GMP库:如何检查大整数的第一个m位



我正在使用gmp(大整数库)

我有一个值b我需要检查它的第一个m位是否为零。

我知道如果我将b转换为字符串,我可以进行检查,但效率不高。

问题1:我需要知道库是否有返回大整数的第一个m位的函数。


为了编码一个大整数c,我将其转换为字符串,然后将其与m个零连接,例如,假设二进制中的c是11,然后我将其编码为:110000000

问题2:我需要知道是否可以使用库的函数

更快地进行编码

GMP库提供了大量的位操作原语。请参阅文档中的"逻辑和位操作函数"一章。

对于您的第一个问题,我认为您希望使用mpz_tstbit。对于您的第二个问题,听起来您正在尝试执行一些位偏移,这可以通过mpz_mul_2expmpz_*_*_2exp函数来完成。

最新更新