64 비트를 조작하려고합니다. 나는 다음과 같은 프로그램64 비트를 조작하는 방법은 무엇입니까?
#include <iostream>
using namespace std;
int main()
{
unsigned long long x = 1;
int cnt = 0;
for(int i =0 ;i<64;++i)
{
if((1<<i)&x)
++cnt;
}
cout<<cnt;
}
를 실행 한 porcess을 테스트 int.To 오래 오래 부호에 저장할 수를 사용하지만 탄소 나노 튜브의 출력은 분명히 잘못이다 2입니다. 어떻게하면 64 비트를 조작 할 수 있습니까? 수정은 어디 있습니까? 사실 저는 2^63보다 적은 수의 이진 표현으로 1의 수인 패리티를 찾으려고합니다.
또는 단순히 '1LLU'. – Shahbaz
예, 맞습니다. 더 간단하고 읽기 쉽습니다. –
더 나은 점 : 'uint64_t'에 대한 캐스트를 사용합니다. 실제로는 정확히 64 비트가 보장됩니다. 'unsigned long long'은 16 비트 또는 32 비트를 포함하여 8 비트보다 큰 값일 수 있습니다. – cmaster