Computer >> Máy Tính >  >> Lập trình >> Java

Đảo ngược các bit thực tế của một số nhất định trong Java


Cho số nguyên n không âm. Mục đích là đảo ngược các bit của n và báo cáo số kết quả của việc làm như vậy. Trong khi đảo ngược các bit, dạng nhị phân thực của số nguyên được sử dụng; không có số 0 đứng đầu nào được tính đến.

Hãy để chúng tôi xem các kịch bản đầu ra đầu vào khác nhau cho việc này

Đầu vào - 13

Đầu ra - Đảo ngược các bit thực tế của số 11 đã cho

(13)10 = (1101)2.
After reversing the bits, we get:
(1011)2 = (11)10.

Giải thích - Các bit nhị phân thu được từ số đầu vào, sau đó được đảo ngược và cuối cùng được chuyển đổi sang định dạng thập phân được trả về dưới dạng đầu ra.

Đầu vào - 18

Đầu ra - Đảo ngược các bit thực tế của số 9 đã cho

(18)10 = (10010)2.
After reversing the bits, we get:
(1001)2 = (9)10.

Giải thích −Các bit nhị phân thu được từ số đầu vào, sau đó được đảo ngược và cuối cùng được chuyển đổi sang định dạng thập phân được trả về dưới dạng đầu ra.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Bên trong phương thức chính

    • Số được lấy đầu vào và chuyển vào phương thức reverseBinaryBits (int input)

  • Bên trong phương thức reverseBinaryBits (int input)

    • Một biến rev_input được khởi tạo để lưu trữ các bit đảo ngược

    • Một vòng lặp được lặp lại với điểm ngắt (đầu vào> 0) (chúng tôi đang duyệt từ bên phải)

      • Phép toán dịch sang phải theo chiều dọc bit được sử dụng để truy xuất từng bit một trong biểu diễn nhị phân của n và phép toán dịch chuyển sang trái theo chiều dọc bit được sử dụng để tích lũy chúng trong vòng quay.

Ví dụ

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

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Reverse actual bits of the given number
11