有网友提出: 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.
|