0

我现在正在处理一些程序集,我想知道下面的代码是什么意思,特别是双胡萝卜(<<)

.EQU LED0 , 0
.EQU LED1 , 1
.EQU LED2 , 2
.EQU LED3 , 3

ldi R16, (1<<LED0 | 1<<LED1 | 1<<LED2 | 1<<LED3)

这是以某种方式改变价值观吗?我有点困惑。注意...这是针对 8 位 Atmel 指令集的。

4

1 回答 1

0

看起来它正在创建 4 个常量(LED0through LED3),它们的数值对应于0through 3

然后(可能由 C 预处理器)使用这些值在编译时构建另一个常量:1<<0 | 1<<1 | 1<<2 | 1<<3

结果值是1111二进制或15十进制。

您可以将整个括号表达式替换为常量十进制表达式15

于 2013-09-26T03:13:01.400 回答