Max*_*xpm 7 c++ bit-manipulation low-level bit-fields
如果使用位运算符(会发生什么事&,|等)来比较两个大小不同的位域?
例如,0 1 1 0与0 0 1 0 0 0 0 1:
0 1 1 0 0 0 0 0 The smaller one is extended with zeros and pushed to the
0 0 1 0 0 0 0 1 most-significant side.
Run Code Online (Sandbox Code Playgroud)
要么...
0 0 0 0 0 1 1 0 The smaller one is extended with zeros and pushed to the
0 0 1 0 0 0 0 1 least-significant side.
Run Code Online (Sandbox Code Playgroud)
要么...
0 1 1 0 The longer one is truncated from its least-significant side,
0 0 1 0 keeping its most significant side.
Run Code Online (Sandbox Code Playgroud)
要么...
0 1 1 0 The longer one is truncated from its most-significant side,
0 0 0 1 keeping its least-significant side.
Run Code Online (Sandbox Code Playgroud)
按位运算符始终用于提升的操作数.所以可能发生的事情可能取决于是否有一个(或两个)位域被签名(因为这可能导致符号扩展).
因此,对于您的示例值,具有二进制值的位字段0 1 1 0将被提升为int 6,并且具有二进制值的位字段0 0 1 0 0 0 0 1将被提升为int 33,并且这些操作数将与将用于任何操作的操作数一起使用. .
| 归档时间: |
|
| 查看次数: |
5864 次 |
| 最近记录: |