সমস্যা বিবৃতি
একটি সংখ্যা দেওয়া হলে বিটগুলিকে এর চরম অবস্থানে অদলবদল করে এটিকে সর্বাধিক করুন যেমন প্রথম এবং শেষ অবস্থানে, দ্বিতীয় এবং দ্বিতীয় শেষ অবস্থানে এবং আরও অনেক কিছু৷
যদি ইনপুট সংখ্যা 8 হয় তবে এর বাইনারি উপস্থাপনা হল−
00000000 00000000 00000000 00001000
চরম অবস্থানে বিট অদলবদল করার পর সংখ্যা −
হয়ে যায়00010000 00000000 00000000 00000000 এবং এর দশমিক সমতুল্য হল:268435456
অ্যালগরিদম
<পূর্ব>1. মূল নম্বর 2 এর একটি অনুলিপি তৈরি করুন। যদি কম তাৎপর্যপূর্ণ বিট 1 হয় এবং আরও তাৎপর্যপূর্ণ বিট 0 হয় তাহলে শুধুমাত্র বিট থেকে বিটগুলিকে অদলবদল করুন, যতক্ষণ না কম গুরুত্বপূর্ণ বিটের অবস্থান আরও উল্লেখযোগ্য বিটের অবস্থান3 থেকে কম না হয় ততক্ষণ পর্যন্ত প্রক্রিয়াটি চালিয়ে যান। নতুন নম্বর ফেরত দিনউদাহরণ
#include#ull unsigned long longusing namespace std;ull getMaxNumber(ull num){ ull origNum =num; int bitCnt =sizeof(ull) * 8 - 1; int cnt =0; for(cnt =0; cnt > cnt) &1; int n =(origNum>> bitCnt) &1; যদি (m> n) { int x =(1 < আউটপুট
আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −
তৈরি করেসর্বোচ্চ সংখ্যা =268435456