2012-04-12 2 views
2

정수에서 개별 비트를 마스킹하거나 추출하는 작업은 엔디안 방식에 따라 다릅니다. 몇 가지 코드를 작성했지만 한 유형의 하드웨어에만 액세스 할 수 있기 때문에 연산자가 엔디안 독립적인지 실제로 확인할 수 없습니다. 버그가 있으면 알려주십시오. 참고 :이 코드는 숙제 문제 및 개인 교습을 위해 작성되었습니다.엔디안 비트 시프트, 비트 연산자의 종속성

void PrintDecimalIntegerInBinary (long long n) 
{ 
    PrintDecimalInBinaryRecursion(n, n >= 0); 
} 

void PrintDecimalInBinaryRecursion (long long n, bool sign) 
{ 
    if (n == 0) { 
     cout << (sign ? 0x0 : 0x1); 
    } 
    else { 
     PrintDecimalInBinaryRecursion((unsigned long long)n >> 1, sign); 
    cout << (n & 0x1); 
    }  
} 

도움 주셔서 감사합니다.

답변

5

endianness는 데이터 저장 방법 만 결정하며 처리 방법은 결정하지 않습니다. 따라서 비트 연산자 나 비트 이동은 엔디안 니스의 영향을받지 않습니다. 특히, 0x1은 엔디안에 관계없이 동일한 것을 의미합니다.

+0

나는 본다. 따라서 8 개 이상의 공백 (예 : int >> 9)을 이동해도 하드웨어 기반의 결과는 변경되지 않습니까? 고맙습니다! – Cindeselia