我有一個ISA,它是小端的「種」。 基本存儲器單元是一個整數,而不是byte.For例如編譯器和endians
00000000: BEFC03FF 00008000
表示一個「低」是整數BEFC03FF
和「高」是整數00008000
。 我需要讀取由某些位表示的值。例如31到47位。 我在VS10(C++)中執行的操作在使用相關掩碼並檢查var & mask
的值後生成uint64_t var = 0x00008000BEFC03FF 。 這樣做是否合法?我對uint64_t位安排做了一些假設 - 它是否合法? 我可以假設,對於非常編譯器和每個操作系統(不依賴於hw),uint64_t中位的排列方式是這樣嗎?
什麼你真的需要做什麼?是否需要讀/寫特定的內存地址,或執行其他形式的I/O?如果不是,那麼你不必擔心排序。 –
@OliCharlesworth - 我沒有寫我想做的事情嗎?如果它不是I/O - 爲什麼我不需要擔心字節順序?我想了解這個概念以及它是否依賴於編譯器 – Yakov
像'uint64_t var = 0x00008000BEFC03FF; var&mask'不依賴於字節順序。只有當你關心底層表示時,字節順序才重要(這就是爲什麼它對IO很重要)。 –