= 1; -6ren">
cuốn sách gpt4 ai đã làm

Sử dụng toán tử "bitwise và" c++

In lại Tác giả: Walker 123 Thời gian cập nhật: 27-11-2023 22:58:28 26 4
mua khóa gpt4 Nike

Tôi có đoạn mã sau

int n = 50;
trong khi(n) { //1
if(n & 1) cout << "1" << endl;
// dịch chuyển số sang phải để n cuối cùng sẽ trở thành 0 và vòng lặp sẽ kết thúc
n >>= 1; //3
}

Khi chúng ta sử dụng tổng bit 1 (& 1) với một số, chúng ta sẽ nhận được số đó. Bây giờ câu hỏi của tôi là làm thế nào để tính biểu thức sau trong c++: n & 1. bởi vì:

  n=50
Ở dạng nhị phân 50 là: 110010
Nếu chúng ta bitwise 1 thì chúng ta nhận được: AND 1 = 110010
Bây giờ trong c++ (2) biểu thức đánh giá như thế này:
Thay vì lấy toàn bộ chuỗi bit (110010) theo bit và được tính bằng 1
nó chỉ đánh giá số bit đúng theo bit của tôi.
n=50, 110010, sử dụng n & 1 ==> 0 AND 1 thay vì 110010 AND 1.

Có lý do nào khiến C++ xử lý bitwise như thế này không? Tôi đoán là nó có liên quan gì đến trình biên dịch?

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

Khi chúng ta sử dụng bitwise và 1 (& 1) với một số, chúng ta sẽ nhận được cùng một số.

Không, chúng tôi không. Những gì chúng ta nhận được là một số bao gồm số ban đầu và các bit trong cả tập hợp số 1. Vì chỉ có bit thấp nhất là 1 được đặt nên kết quả là bit thấp nhất của số gốc.

Bây giờ câu hỏi của tôi là làm thế nào c++ đánh giá biểu thức sau: n & 1.

nếu nhưNlà 50, sau đó là nhị phân:

n: 110010
1: 000001
n&1: 000000 // không có bit nào được đặt trong cả hai

nếu nhưNlà 51, sau đó là nhị phân:

n: 110011
1: 000001
n&1: 000001 // một bit được đặt ở cả hai

Về c++ - sử dụng toán tử "bitwise và" c++, 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/30165137/

26 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