Computer >> Máy Tính >  >> Lập trình >> C ++

Ba bit đầu tiên và cuối cùng trong C ++

Trong bài toán này, chúng tôi được cung cấp một số N. Nhiệm vụ của chúng tôi là tìm chuyển đổi thập phân của ba bit đầu tiên và ba bit cuối cùng cho các giá trị số nguyên N đã cho .

Hãy lấy một ví dụ để hiểu vấn đề,

Input : 57
Output : 71

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản là thay đổi số n thành số tương đương nhị phân của nó và sau đó lưu các bit trong một mảng. Sau đó, chúng tôi sẽ chuyển đổi ba giá trị đầu tiên và ba giá trị cuối cùng từ mảng thành các số riêng lẻ. Việc chuyển đổi thập phân của cả hai bộ bit là kết quả của chúng tôi.

Ví dụ:lấy số 80.

Chuyển đổi nhị phân của 80 là 1010000.

Chuyển đổi thập phân của ba bit đầu tiên (101) là 5.

Tương đương thập phân của ba bit cuối cùng (000) là 0.

Do đó đầu ra là 5 0.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#include <bits/stdc++.h>
using namespace std;
void convtbnTodcml(int n)
{
   int arr[64] = { 0 };
   int x = 0, index;
   for (index = 0; n > 0; index++) {
      arr[index] = n % 2;
      n /= 2;
   }
   x = (index < 3) ? 3 : index;
   int d = 0, p = 0;
   for (int index = x - 3; index < x; index++)
      d += arr[index] * pow(2, p++);
   cout << d << " ";
   d = 0;
   p = 0;
   for (int index = 0; index < 3; index++)
      d += arr[index] * pow(2, p++);
   cout << d;
}
int main()
{
   int n = 57;
   cout<<"Decimal conversion of first and last bits of the number "<<n<<" is ";
   convtbnTodcml(n);
   return 0;
}

Đầu ra

Decimal conversion of first and last bits of the number 57 is 7 1