我有一个长度为 64 的二进制数组。我想在 C 中找到相应的整数。我编写了以下代码。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
main()
{
int A[64]={1, 1, 1, 1, 1,1, 1, 1, 1, 1,1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1, 1, 1, 1, 1,1, 1, 1, 1, 1, 1,1,1,1},i;
long long int B=0;
for(i=0;i<64;i++)
B=B+A[i]*pow(2,63-i);
printf("B=%llu\n",B);
}
结果没问题。但是为了提高效率,我想要移位运算符 (<<) 而不是 pow 函数。我怎样才能做到这一点?