長さ 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);
}
結果はOKです。しかし、 pow 関数の代わりに、効率のためにシフト演算子 (<<) が必要です。これどうやってするの?