Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Đảo ngược các bit thực tế của số cho trước trong Java

Cho số nguyên n không âm. Mục tiêu là đảo ngược các bit của n và trả về số kết quả. Khi đảo bit, chỉ sử dụng dạng nhị phân thực tế của số; không tính các bit 0 dẫn đầu.

Các kịch bản đầu vào/đầu ra

Đầu vào: 13

Đầu ra: Đảo ngược bit thực tế của số: 11

(13)₁₀ = (1101)₂. Sau khi đảo bit: (1011)₂ = (11)₁₀.

Giải thích: Lấy dạng nhị phân của số, đảo ngược, chuyển về thập phân.

Đầu vào: 18

Đầu ra: Đảo ngược bit thực tế của số: 9

(18)₁₀ = (10010)₂. Sau khi đảo bit: (1001)₂ = (9)₁₀.

Phương pháp tiếp cận

  • Trong main(): Nhập số, gọi reverseBinaryBits(int input)
  • Trong reverseBinaryBits:
    • Khởi tạo rev_input = 0
    • Vòng lặp while (input > 0) (duyệt từ bit phải nhất)
      • Dịch trái rev_input 1 bit: rev_input <<= 1
      • Nếu bit thấp nhất của input là 1: rev_input ^= 1
      • Dịch phải input 1 bit: input >>= 1
    • Trả về rev_input

Ví dụ mã Java

class TutorialsPoint {
    public static int reverseBinaryBits(int input) {
        int rev_input = 0;
        while (input > 0) {
            rev_input <<= 1;
            if ((int) (input & 1) == 1) {
                rev_input ^= 1;
            }
            input >>= 1;
        }
        return rev_input;
    }
    
    public static void main(String[] args) {
        int input = 13;
        System.out.println("Reverse actual bits of the given number");
        System.out.println(reverseBinaryBits(input));
    }
}

Đầu ra

Reverse actual bits of the given number 11