arduino / arduino/ArduinoCore-API
Bit manipulation not working with 64 bit values
- 主要言語
- C++
- スター
- 306
- フォーク
- 150
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
I need to manipulate bits in `uint64_t` variable.
Standard `bitRead()`, `bitWrite()`, `bitSet()`, `bitClear()`, `bitToggle()` macros not working. They work only up to 32 bits (`uint32_t`).
I made quick hack in my code to work with 64 bit variables:
```cpp
#define bitRead64(value, bit) (((value) >> (bit)) & 0x01ULL)
#define bitSet64(value, bit) ((value) |= (1ULL << (bit)))
#define bitClear64(value, bit) ((value) &= ~(1ULL << (bit)))
#define bitToggle64(value, bit) ((value) ^= (1ULL << (bit)))
#define bitWrite64(value, bit, bitvalue) ((bitvalue) ? bitSet64((value), (bit)) : bitClear64((value), (bit)))
```
Recommendations: consider to rewrite `bitRead()`, `bitWrite()`, `bitSet()`, `bitClear()`, `bitToggle()` and `bit()` for 64 bit compatibility if possible and hope it will not break global compatibility.
Original post: https://github.com/earlephilhower/arduino-pico/issues/3260
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
まず、Arduino API にある標準の bitRead()、bitWrite()、bitSet()、bitClear()、bitToggle()、bit() マクロを見つけます。Issue 内の uint64_t の例と動作を比較し、リンクされている pull request #278 を確認します。既存の互換性を損なわずに 64 ビット値がサポートされれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- cpp
- 領域
- api, embedded-iot
- issue の種類
- 機能追加
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 25/100