有网友提出: pattern=pattern<<1|0x0001怎么理解
我用Atmle Studio6.2做了一个小实验。结果让我很吃惊,也谢谢网友能提出这样的问题。
首先选择不用库建立一个工程。然后选择ATmega16。
然后加入以下程序:
- #include <avr/io.h>
- #include <stdint.h>
- #include <util/delay.h>
- uint16_t pattern;
- int main(void)
- {
-
- pattern = 0xFFFE;
- pattern=pattern<<1|0x0001;
- _delay_ms(100);
-
- while(1)
- {
- //TODO:: Please write your application code
- }
- }
运行结果如下:
转换成十六进制为:
可见整体都移一位,然后再或上那个1.
|