2012-04-12 9 views
2

Machen irgendwelche der Operationen, die sich mit der Maskierung oder dem Extrahieren einzelner Bits von einer Ganzzahl befassen, von Endianess abhängig? Ich habe etwas Code geschrieben, aber mit Zugriff nur auf Hardware eines Typs kann ich nicht wirklich überprüfen, ob seine Operatoren Endian-unabhängig sind. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Fehler sehen. HINWEIS: Dieser Code wurde für ein Hausaufgabenproblem und persönliche Erbauung geschrieben:Endian-Abhängigkeit in Bit-Verschiebung, bitweise Operatoren

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

Vielen Dank für Ihre Hilfe.

Antwort

5

Endianness bestimmt nur, wie Daten gespeichert werden, nicht wie sie verarbeitet werden. Also sind bitweise Operatoren oder Bitverschiebungen von der Endianheit nicht betroffen. Spezifisch bedeutet 0x1 dasselbe ungeachtet der Endianess.

+0

Ich sehe. Also würde das Verschieben von Bits um mehr als 8 Leerzeichen (d. H. Int >> 9) die Ergebnisse nicht basierend auf der Hardware ändern? Vielen Dank! – Cindeselia