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