समस्या विवरण
मान लीजिए हमारे पास एक पूर्णांक है; हमें इसे हेक्साडेसिमल में बदलने के लिए एक एल्गोरिदम तैयार करना है। ऋणात्मक संख्याओं के लिए हम टूज़ कॉम्प्लीमेंट विधि का उपयोग करेंगे।
उदाहरण
यदि इनपुट है: 254 और -12, तो आउटपुट होगा fe और fffffff4 क्रमशः।
हल करने का दृष्टिकोण
इस समस्या को हल करने के लिए निम्नलिखित चरणों का पालन करें:
- यदि num1, 0 के समान है, तो "0" लौटाएं
- num := num1
- s := खाली स्ट्रिंग
- जब num शून्येतर है:
- temp := num % 16
- यदि temp <= 9:
- s := s + temp को संख्यात्मक वर्ण के रूप में
- अन्यथा:
- s := s + temp को वर्णमाला के रूप में
- num := num / 16
- सरणी s को रिवर्स करें
- s लौटाएं
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string toHex(int num1) {
if (num1 == 0)
return "0";
u_int num = num1;
string s = "";
while (num) {
int temp = num % 16;
if (temp <= 9)
s += (48 + temp);
else
s += (87 + temp);
num = num / 16;
}
reverse(s.begin(), s.end());
return s;
}
};
int main() {
Solution ob;
cout << (ob.toHex(254)) << endl;
cout << (ob.toHex(-12));
return 0;
}
इनपुट
254 -12
आउटपुट
fe fffffff4