ビットが設定されているかどうかのみをチェックする以下のアルゴリズムを使用して、C++ で unsigned long long の設定ビットをチェックしようとしています。しかし、私の問題は、私が得た答えが間違っていることです。バイナリで格納されます。
コード:
#include<stdio.h>
#include<iostream>
#define CHECK_BIT(var,pos) ((var) & (1<<(pos)))
using namespace std;
int main()
{
int pos=sizeof(unsigned long long)*8;
unsigned long long a;
cin>>a;
pos=pos-1;
while(pos>=0)
{
if(CHECK_BIT(a,pos))
cout<<"1";
else
cout<<"0";
--pos;
}
}
入力:
1000000000000000000
出力:
1010011101100100000000000000000010100111011001000000000000000000
期待される出力:
110111100000101101101011001110100111011001000000000000000000
別の入力についても同様です。
14141
出力:
0000000000000000001101110011110100000000000000000011011100111101
期待される出力:
11011100111101
2 番目の例 (実際には任意の小さな数値) では、バイナリ パターンは 32 ビット後に繰り返されます。