2
AVRコードがビットシフトを使用する理由[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 AVRプログラミングでは、レジスタビットは、a 1を適切なビット位置に左シフトすることによって常に設定され、それらの1の補数によってクリアされます。 例: ATtiny85の場合、PORTB、b 4を次のように設定します。 PORTB |= (1<<PB4); または、次のようにクリアします。 PORTB &= ~(1<<PB4); 私の質問は次のとおりです。なぜそれがこのように行われるのですか?最も単純なコードは、ビットシフトの混乱になります。なぜビットがマスクの代わりにビット位置として定義されるのですか? たとえば、ATtiny85のIOヘッダーにはこれが含まれています: #define PORTB _SFR_IO8(0x18) #define PB5 5 #define PB4 4 #define PB3 3 #define PB2 2 #define PB1 1 #define PB0 0 私にとっては、代わりにビットをマスクとして定義する方がはるかに論理的です(このように): #define PORTB _SFR_IO8(0x18) #define PB5 0x20 #define PB4 0x10 #define PB3 …