Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

पिछला छोटा पूर्णांक जिसमें C++ में सेट बिट्स की एक कम संख्या होती है

इस समस्या में, हमें एक पूर्णांक n दिया गया है। हमारा काम n से कम सबसे बड़ी संख्या को प्रिंट करना है जिसे संख्या के द्विआधारी प्रतिनिधित्व के एक सेट बिट को बदलकर बनाया जा सकता है।

आइए समस्या को समझने के लिए एक उदाहरण लेते हैं

Input: n = 3
Output: 2
Explanation: (3)10 = (011)2
Flipping one set bit gives 001 and 010. 010 is greater i.e. 2.

इस समस्या को हल करने के लिए, हमें सबसे दाहिने सेट बिट को फ़्लिप करना होगा और इसे शून्य करना होगा जो कि संख्या के एक बिट को फ़्लिप करने से प्राप्त होने वाली संख्या को n से कम की सबसे बड़ी संभव संख्या बना देगा।

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

उदाहरण

#include<iostream>
#include<math.h>
using namespace std;
int returnRightSetBit(int n) {
   return log2(n & -n) + 1;
}
void previousSmallerInteger(int n) {
   int rightBit = returnRightSetBit(n);
   cout<<(n&~(1<<(rightBit - 1)));
}
int main() {
   int n = 3452;
   cout<<"The number is "<<n<<"\nThe greatest integer smaller than the number is : ";
   previousSmallerInteger(n);
   return 0;
}

आउटपुट

The number is 3452
The greatest integer smaller than the number is : 3448

  1. C++ में एक पूर्णांक का पूरक खोजें

    इस भाग में, हम देखेंगे कि किसी पूर्णांक का 1 पूर्ण कैसे ज्ञात किया जाता है। हम इस कार्य को बहुत तेजी से करने के लिए पूरक ऑपरेटर का उपयोग कर सकते हैं, लेकिन यह 32 बिट पूरक मूल्य (4-बाईप पूर्णांक) बना देगा। यहाँ हम n बिट संख्याओं का पूरक चाहते हैं। मान लीजिए कि हमारे पास एक संख्या 22 है। बाइनरी समकक्

  1. सी ++ में सेट बिट्स की गिनती के अनुसार एक सरणी को क्रमबद्ध करें

    यहां हम सेट-बिट्स के आधार पर एक सरणी को सॉर्ट करने के लिए एक दिलचस्प समस्या देखेंगे। जब सरणी में एक तत्व में सेट-बिट्स की संख्या अधिक होती है, तो उसे दूसरे तत्व से पहले रखा जाएगा जिसमें सेट बिट्स की संख्या कम होती है। मान लीजिए कुछ संख्याएं 12, 15, 7 हैं। तो सेट बिट्स मूल रूप से उनके द्विआधारी प्रति

  1. C++ में k सेट बिट्स के साथ किसी संख्या को अधिकतम करने के लिए आवश्यक न्यूनतम फ़्लिप।

    समस्या कथन दो नंबर n और k को देखते हुए, हमें दी गई संख्या को अधिकतम करने के लिए आवश्यक फ़्लिप की न्यूनतम संख्या को इसके बिट्स को फ़्लिप करके खोजने की आवश्यकता है जैसे कि परिणामी संख्या में k सेट बिट्स हों। कृपया ध्यान दें कि इनपुट को इस शर्त को पूरा करना चाहिए कि k