Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ย้อนกลับบิตจริงของตัวเลขที่ระบุใน Java


กำหนดจำนวนเต็ม n ที่ไม่ใช่ค่าลบ เป้าหมายคือการกลับบิตของ n และรายงานจำนวนที่เกิดจากการทำเช่นนั้น ในขณะที่ย้อนกลับบิต จะใช้รูปแบบไบนารีจริงของจำนวนเต็ม ไม่นำ 0 นำหน้า

ให้เราดูสถานการณ์อินพุตเอาต์พุตต่างๆ สำหรับสิ่งนี้

ป้อนข้อมูล − 13

ผลผลิต - ย้อนกลับบิตจริงของตัวเลขที่กำหนด 11

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

คำอธิบาย − ไบนารีบิตได้มาจากตัวเลขอินพุตซึ่งจะถูกย้อนกลับและสุดท้ายถูกแปลงเป็นรูปแบบทศนิยมซึ่งจะถูกส่งกลับเป็นเอาต์พุต

ป้อนข้อมูล − 18

ผลผลิต - ย้อนกลับบิตจริงของตัวเลขที่กำหนด 9

(18)10 = (10010)2.
After reversing the bits, we get:
(1001)2 = (9)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