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

throughに対応する数値を持つ4 つの定数 ( LED0through ) を作成しているようです。LED303

これらの値は、コンパイル時に別の定数を作成するために (おそらく C プリプロセッサによって) 使用されます。1<<0 | 1<<1 | 1<<2 | 1<<3

結果の値は2 進数1111または1510 進数です。

括弧内の式全体を定数 10 進数の式に置き換えることができます15

于 2013-09-26T03:13:01.400 に答える