Bit manipulation not working with 64 bit values

Đang mở
#261 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

@asumo-1xts đang làm issue này rồi.

Từ ngày 30/8/2026.

  • #278 của @asumo-1xts — đang mở

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
cpp
Lĩnh vực
api, embedded-iot

Hướng nghiên cứu

Bắt đầu bằng cách tìm các macro tiêu chuẩn bitRead(), bitWrite(), bitSet(), bitClear(), bitToggle() và bit() trong Arduino API. So sánh hành vi của chúng với các ví dụ uint64_t trong issue và kiểm tra pull request #278 được liên kết. Hoàn thành khi các giá trị 64-bit được hỗ trợ mà không làm hỏng khả năng tương thích hiện có.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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:

#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

Ngôn ngữ chính
C++
Star
306
Fork
150
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của arduino/ArduinoCore-API

Tất cả issue của arduino/ArduinoCore-API

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.