位移,位运算符中的Endian依赖关系

时间:2012-04-12 10:34:34

标签: binary endianness bit bit-shift

处理从整数中屏蔽或提取单个位的任何操作是否取决于字节顺序?我已经编写了一些代码,但只能访问一种类型的硬件,我无法确定它的运算符是否与字节序无关。如果您发现任何错误,请告诉我。注意:此代码是为家庭作业问题和个人启发而编写的:

 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);
    }     
 }

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

字节顺序仅确定数据的存储方式,而不是如何处理数据。因此任何按位运算符或位移都不受字节序的影响。具体来说,无论字节顺序如何,0x1都表示相同的内容。