当前位置:  开发笔记 > 编程语言 > 正文

按位运算符和"字节序"

如何解决《按位运算符和"字节序"》经验,为你挑选了3个好方法。

按字节操作,字节顺序是否重要?任一逻辑或移位?

我正在做作业关于位运算符,我不能做出正面或反面就可以了,我想我已经相当挂了字节序.也就是说,我正在使用一个小端机器(像大多数人一样),但是这需要考虑还是浪费的事实?

如果重要,我正在使用C.



1> Michael..:

字节序仅对内存中数据的布局很重要.一旦处理器加载数据以进行操作,字节顺序就完全无关紧要.无论字节顺序如何,移位,按位运算等都可以按预期执行(数据逻辑地将数据布局为低位到高).


逻辑上不应该是"高到低位"吗?

2> 1800 INFORMA..:

按位运算符抽象出字节序.例如,>>运算符总是将位移向最低有效位.但是,这并不意味着在使用它们时完全忽略字节顺序是安全的,例如,当处理更大结构中的单个字节时,您不能总是假设它们将落在同一位置.

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];

澄清一下,我对这里的其他答案并没有基本的不同意见.我想要强调的是,尽管按位运算符基本上是字节序中性的,但你不能忽略代码中endianess的影响,特别是当与其他运算符结合使用时.


因此,进一步澄清您的意思是,除非我实际上是以字节为单位检索值,否则是否一切正常?

3> rpetrich..:

正如其他人提到的那样,移位是由C语言规范定义的,并且与字节序无关,但是右移的实现可能会有所不同,具体取决于体系结构是使用一个补码还是两个补码算术。

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有