Fra*_*k V 68 c bit-manipulation bit-shift endianness
我正在做作业关于位运算符,我不能做出正面或反面就可以了,我想我已经相当挂了字节序.也就是说,我正在使用一个小端机器(像大多数人一样),但是这需要考虑还是浪费的事实?
如果重要,我正在使用C.
Mic*_*ael 70
字节序仅对内存中数据的布局很重要.一旦处理器加载数据以进行操作,字节顺序就完全无关紧要.无论字节顺序如何,移位,按位运算等都可以按预期执行(数据逻辑地将数据布局为低位到高).
180*_*ION 64
按位运算符抽象出字节序.例如,>>
运算符总是将位移向最低有效位.但是,这并不意味着在使用它们时完全忽略字节顺序是安全的,例如,当处理更大结构中的单个字节时,您不能总是假设它们将落在同一位置.
short temp = 0x1234;
temp = temp >> 8;
// on little endian, c will be 0x12, on big endian, it will be 0x0
char c=((char*)&temp)[0];
Run Code Online (Sandbox Code Playgroud)
澄清一下,我对这里的其他答案并没有基本的不同意见.我想要强调的是,尽管按位运算符基本上是字节序中性的,但你不能忽略代码中endianess的影响,特别是当与其他运算符结合使用时.