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

จำนวนที่ใหญ่ที่สุดที่มีการแทนค่าไบนารีคือ m 1 และ m-1 0 ใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่หาจำนวนที่มากที่สุดด้วย m 1 และ m - 1 0

มาดูขั้นตอนการแก้ปัญหากัน

  • เริ่มต้นสองตัวแปรบิตและผลลัพธ์ด้วย 2 และ 1 ตามลำดับ
  • เขียนลูปที่วนซ้ำจาก 1 ถึง n
    • อัปเดตค่าตัวแปรการวนซ้ำด้วย pow(2, bits) - 1) * (pow(2, bits - 1).
    • หากตัวแปรวนซ้ำน้อยกว่า n ให้อัปเดตผลลัพธ์ด้วย i
    • เพิ่มจำนวนบิตให้มากขึ้น
  • ส่งคืน resutl.

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
long long getTheNumber(long long n) {
   long bits = 2;
   long long result = 1;
   long long i = 1;
   while (i < n) {
      i = (int)(pow(2, bits) - 1) * (pow(2, bits - 1));
      if (i < n) {
         result = i;
      }
      bits++;
   }
   return result;
}
int main() {
   long long n = 654;
   cout << getTheNumber(n) << endl;
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

496

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น