Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [C] Trích bit 1 thấp nhất của cờ thông báo

    Ứng dụng dùng một số unsigned int để gom các cờ thông báo đang chờ xử lý — mỗi bit là một loại sự kiện. Bộ xử lý luôn lấy sự kiện có chỉ số bit thấp nhất ra phục vụ trước.

    Viết chương trình in ra giá trị chỉ chứa bit 1 thấp nhất của nnn. Có một mẹo C kinh điển: n & -n (hoặc tương đương n & (~n + 1)), nhờ biểu diễn bù 2 của số âm.

    Ví dụ: n=12=11002n = 12 = 1100_2n=12=11002​ → bit 1 thấp nhất là bit 2 → đáp án 01002=40100_2 = 401002​=4.

    • Định dạng đầu vào:

      Một số nguyên không dấu nnn (0≤n≤4,294,967,2950 \le n \le 4{,}294{,}967{,}2950≤n≤4,294,967,295).

    • Ràng buộc đầu vào:

      Dùng unsigned int và biểu thức n & (~n + 1u).

    • Định dạng đầu ra:

      Một số nguyên — giá trị n & -n (nếu n=0n = 0n=0 thì in 0).

    Ví dụ:

    Đầu vào:

    12
    

    Đầu ra:

    4

    Giải thích:

    12 = 1100, bit thấp nhất bật là bit 2, giá trị 100 = 4.

    Đang tải editor...