Endian Зависимость в битовом сдвиге, побитовые операторы

Зависят ли какие-либо операции, связанные с маскированием или извлечением отдельных битов из целого числа, от порядка следования байтов? Я написал некоторый код, но имея доступ только к оборудованию одного типа, я не могу проверить, что его операторы не зависят от порядка следования байтов. Пожалуйста, дайте мне знать, если вы видите какие-либо ошибки. ПРИМЕЧАНИЕ. Этот код был написан для домашнего задания и личного назидания:

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

Спасибо за вашу помощь.


person Erika Electra    schedule 12.04.2012    source источник


Ответы (1)


Endianness определяет только то, как данные хранятся, а не то, как они обрабатываются. Таким образом, порядок следования байтов не влияет на любые побитовые операторы или сдвиг битов. В частности, 0x1 означает одно и то же независимо от порядка байтов.

person Waynn Lue    schedule 12.04.2012
comment
Я понимаю. Таким образом, даже сдвиг битов более чем на 8 пробелов (т.е. int ›› 9) не изменит результаты в зависимости от аппаратного обеспечения? Благодарю вас! - person Erika Electra; 12.04.2012