Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 주어진 숫자의 실제 비트 반전


음수가 아닌 정수 n이 주어집니다. 목표는 n의 비트를 반대로 하고 그렇게 함으로써 생긴 숫자를 보고하는 것입니다. 비트를 반대로 하는 동안 정수의 실제 이진 형식이 사용됩니다. 선행 0은 고려되지 않습니다.

이를 위한 다양한 입력 출력 시나리오를 살펴보겠습니다.

입력 − 13

출력 - 주어진 숫자 11의 실제 비트 반전

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

설명 − 입력된 숫자에서 이진 비트를 얻은 다음 역으로 변환하여 최종적으로 출력으로 반환되는 10진수 형식으로 변환합니다.

입력 − 18

출력 - 주어진 숫자 9의 실제 비트 반전

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

설명 −2진 비트는 입력된 숫자에서 얻은 다음 반전되고 최종적으로 출력으로 반환되는 10진 형식으로 변환됩니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 기본 메서드 내부

    • 숫자를 입력받아 reverseBinaryBits(int input) 메소드로 전달합니다.

  • reverseBinaryBits(int 입력) 메서드 내부

    • 반전된 비트를 저장하기 위해 rev_input 변수가 초기화됩니다.

    • 루프는 중단점(입력> 0)으로 반복됩니다(오른쪽에서 탐색 중입니다).

      • 비트 오른쪽 시프트 연산은 n의 이진 표현에서 비트를 하나씩 검색하는 데 사용되며 비트 왼쪽 시프트 연산은 rev에 누적하는 데 사용됩니다.

예시

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));
   }
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Reverse actual bits of the given number
11