इस समस्या में, हमें एक संख्या N दी जाती है। हमारा कार्य दिए गए पूर्णांक मानों N के लिए मुट्ठी तीन और अंतिम तीन बिट्स का दशमलव रूपांतरण खोजना है। ।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input : 57 Output : 71
समाधान दृष्टिकोण
एक सरल उपाय यह है कि संख्या n को उसके बाइनरी समकक्ष में बदल दिया जाए और फिर बिट्स को एक सरणी में सहेजा जाए। इसके बाद, हम सरणी से पहले तीन और अंतिम तीन मानों को अलग-अलग संख्याओं में बदल देंगे। बिट्स के दोनों सेटों का दशमलव रूपांतरण हमारा परिणाम है।
उदाहरण के लिए, संख्या 80 लें।
80 का बाइनरी रूपांतरण 1010000 है।
पहले तीन बिट्स (101) का दशमलव रूपांतरण 5 है।
अंतिम तीन बिट्स (000) का दशमलव तुल्यांक 0 है।
इसलिए आउटपुट 5 0 है।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#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; }
आउटपुट
Decimal conversion of first and last bits of the number 57 is 7 1