กำหนดจำนวนเต็ม 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