cuốn sách gpt4 ai đã làm

c++ - ý nghĩa của (số) và (-number)

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 16:26:18 30 4
mua khóa gpt4 Nike

(số) & (-số) Nó có nghĩa là gì? Tôi đã tìm kiếm nhưng không thể tìm thấy ý nghĩa

Tôi muốn sử dụng vòng lặp for tôi & (-i),例如:

vì (i = 0; tôi <= n; tôi += i & (-i))

câu trả lời hay nhất

Giả sử phần bù 2 (hoặc Tôi không được ký tên),-i 等于 ~tôi+1.

tôi & (~i + 1) đang khai thác Tôi Thủ thuật bit cài đặt thấp nhất.

Điều này hoạt động vì những gì +1 thực sự làm là đặt bit rõ ràng thấp nhất và xóa tất cả các bit bên dưới mức đó. Vì vậy, trong Tôi~tôi+1 Bit duy nhất được đặt trong là Tôi Bit được đặt thấp nhất trong (tức là bit bị xóa thấp nhất trong ~tôi ở giữa). bên dưới nó là~tôi+1được xóa trongTôi~tôikhông bằng nhau.

Trừ khi thân vòng lặp được sửa đổi Tôi, nếu không thì có vẻ lạ khi sử dụng nó trong một vòng lặp, bởi vì tôi = tôi & (-i) là một phép toán bình thường: thực hiện nó hai lần sẽ cho kết quả như nhau.

[Chỉnh sửa: Trong một nhận xét ở nơi khác, bạn đã chỉ ra rằng mã thực sự là tôi += tôi & (-i). Vì vậy, đối với khác không Tôi Chức năng là để xóa Tôi tập hợp các bit được đặt thấp nhất và đặt bit rõ ràng tiếp theo ở trên nó, ví dụ: 101100 -> 110000.TôiKhông có bit rõ ràng nào phía trên bit được đặt thấp nhất (bao gồm cải = 0), tập hợp nàoTôilà 0. Vậy nếu không phải vì Tôi từ 0 Ban đầu, mỗi vòng lặp sẽ Tôi Tăng Ít nhất Hai lần rất giống với vòng lặp trước, đôi khi nhiều hơn, cho đến khi vượt quá n và phá vỡ hoặc đi đến 0 Và lặp lại mãi mãi.

Viết mã như thế này mà không có bình luận nói chung là không thể tha thứ được, nhưng tùy thuộc vào miền vấn đềkhả thiĐây là một chuỗi giá trị tuần hoàn "rõ ràng". ]

Về c++ - ý nghĩa của (number) và (-number), chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/12818978/

30 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress