একটি পূর্ণসংখ্যা n দেওয়া হয়েছে যা ঋণাত্মক নয়৷ লক্ষ্য হল n এর বিটগুলিকে বিপরীত করা এবং এটি করার ফলে যে সংখ্যাটি আসে তা রিপোর্ট করা। বিটগুলি বিপরীত করার সময়, পূর্ণসংখ্যার প্রকৃত বাইনারি ফর্ম ব্যবহার করা হয়; কোন অগ্রগণ্য 0 একাউন্টে নেওয়া হয় না।
আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি
ইনপুট - 13
আউটপুট − প্রদত্ত সংখ্যা 11
এর প্রকৃত বিট বিপরীত করুন(13)10 =(1101)2 .বিটগুলি বিপরীত করার পরে, আমরা পাই:(1011)2 =(11)10 .
ব্যাখ্যা − বাইনারি বিটগুলি ইনপুট নম্বর থেকে প্রাপ্ত করা হয় যা পরে বিপরীত করা হয় এবং অবশেষে দশমিক বিন্যাসে রূপান্তরিত হয় যা আউটপুট হিসাবে ফেরত দেওয়া হয়।
ইনপুট − 18
আউটপুট − প্রদত্ত সংখ্যা 9 এর প্রকৃত বিট বিপরীত করুন
(18)10 =(10010)2 .বিটগুলি বিপরীত করার পর, আমরা পাই:(1001)2 =(9)10 .
ব্যাখ্যা −বাইনারি বিটগুলি ইনপুট নম্বর থেকে প্রাপ্ত করা হয় যা পরে বিপরীত করা হয় এবং অবশেষে দশমিক বিন্যাসে রূপান্তরিত হয় যা আউটপুট হিসাবে ফেরত দেওয়া হয়।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
মূল পদ্ধতির ভিতরে
-
নম্বরটি ইনপুট নেওয়া হয় এবং পদ্ধতিতে পাস করা হয় রিভার্সবাইনারীবিটস(int ইনপুট)
-
-
পদ্ধতির ভিতরে রিভার্সবাইনারিবিটস(int ইনপুট)
-
একটি পরিবর্তনশীল rev_input চালু করা হয় বিপরীত বিটগুলি সংরক্ষণ করার জন্য
-
একটি লুপ ব্রেকিং পয়েন্ট (ইনপুট> 0) দিয়ে পুনরাবৃত্তি করা হয় (আমরা ডান দিক থেকে চলেছি)
-
বিটওয়াইজ রাইট শিফট অপারেশন ব্যবহার করা হয় n-এর বাইনারি উপস্থাপনায় একের পর এক বিট পুনরুদ্ধার করতে, এবং বিটওয়াইজ বাম শিফট অপারেশন ব্যবহার করা হয় সেগুলোকে রেভ-এ জমা করতে।
-
-
উদাহরণ
<প্রি>ক্লাস টিউটোরিয়াল পয়েন্ট{ পাবলিক স্ট্যাটিক int reverseBinaryBits(int input){ int rev_input =0; যখন (ইনপুট> 0){ rev_input <<=1; যদি ((int) (ইনপুট এবং 1) ==1){ rev_input ^=1; } ইনপুট>>=1; } রিটার্ন rev_input; } পাবলিক স্ট্যাটিক ভ্যাইড মেইন (স্ট্রিং[] আর্গস){ int ইনপুট =13; System.out.println("প্রদত্ত সংখ্যার প্রকৃত বিট বিপরীত"); System.out.println(reverseBinaryBits(input)); }}আউটপুট
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে
প্রদত্ত নম্বর 11 এর প্রকৃত বিট বিপরীত করুন