मैं एक असाइनमेंट पर काम कर रहा हूं, जहां मुझे बिटवाइज़ ऑपरेटर्स (या, या नहीं) का उपयोग करना है

कार्यक्रम में एक निश्चित 4X4 मैट्रिक्स है और उपयोगकर्ता प्रोग्राम को एक क्वेरी दर्ज करने के लिए मान लेता है और दो द्विआधारी संख्याओं को इंगित करता है, उन्हें ... आदि।

समस्या उदाहरण के लिए "शून्य अग्रणी" द्विआधारी संख्या है: 0111 को मूल्य 73 के साथ दिखाया जाता है, जब मैं इसे सेटफिल () और सेटव () के साथ कूटने का प्रबंधन करता हूं, तो मैं वास्तविक द्विआधारी मूल्य पर बिटवाइज ऑपरेशन नहीं कर सकता हूं!

N.B: मैंने टोट्स के बजाय स्ट्रिंग्स की कोशिश की है, लेकिन बिटवाइज़ ऑपरेशन अभी भी लागू नहीं होता है।

उदाहरण के लिए:

अगर मैं दो द्विआधारी मूल्यों को चाहता हूं तो आइए int x = 1100 और int y = 0100 को अन्य int z z = x & y में कहें;

परिणाम 0100 माना जाता है, लेकिन जो परिणाम दिखाई देता है वह 64 है

जो भी परिणाम दिखाई देता है अगर मैंने स्क्रीन पर y प्रिंट करने का प्रयास किया

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main()
{

    int Matrix[4][4]={{1,1,0,0},{1,1,0,1},{1,1,0,1},{0,1,0,0}};
    string Doc[4]={"Doc1","Doc2","Doc3","Doc4"};
    string Term[4]={"T1","T2","T3","T4"};

    cout << "THE MATRIX IS:"<<endl;

    for(int i=0;i<4;i++)
    {
        cout<<"\t"<<Doc[i];
    }
    cout<<"\n";
    for(int row=0; row<4;row++)
    {
        cout<<Term[row]<<"\t";
        for(int col=0;col<4;col++)
        {
            cout<<Matrix[row][col]<<"\t";
        }
        cout<<endl;
    }

    int term1=1100;
    cout<<"\nTerm1= "<<term1;
    int term2=1101;
    cout<<"\nTerm2= "<<term2;
    int term3=1101;
    cout<<"\nTerm3= "<<term3;
    int term4=0100;
    cout<<"\nTerm4= "<<setfill('0')<<setw(4)<<term4;


    int Q=term1&term4;
    cout<<"\n Term1 and Term4 ="<<Q;

    system("pause");
    return 0;
}
-2
Rawan.S 3 पद 2015, 22:17

2 जवाब

सबसे बढ़िया उत्तर

आपका प्रश्न अभी भी स्पष्ट नहीं है। आपने कहा है कि आपके पास 4x4 मैट्रिक्स है, यह किस प्रकार का मैट्रिक्स या 2D सरणी है? तो शायद आप अधिक विस्तार से बता सकते हैं।

बायनेरिज़ से निपटने के बारे में, जो छात्र आमतौर पर भ्रमित करते हैं, वह यह है कि यदि आप पूर्णांक चर का उपयोग कर रहे हैं, तो आप इन चर पर बिटवाइस हेरफेर का उपयोग कर सकते हैं और परिणाम अभी भी पूर्णांक प्रारूप के रूप में पढ़ा जाएगा। और यदि आप बिटवाइज हेरफेर के दौरान जो कुछ भी हो रहा है उसे देखने की तलाश करते हैं और प्रक्रिया की कल्पना करते हैं, तो आप हमेशा bitset ऑब्जेक्ट का पालन कर सकते हैं।

#include <iostream>
#include <bitset>

int main() {
    int a = 7, b = a>>3, c = a<<2;

    std::cout << "a = " << std::bitset<8>(a)  << std::endl;
    std::cout << "b = " << std::bitset<8>(b)  << std::endl;
    std::cout << "c = " << std::bitset<8>(c) << std::endl;
}

जिसे छापना चाहिए

00000111
00000000
00011100

तो अपने चर के साथ चारों ओर खेलते हैं और फिर bitset का उपयोग करते हुए उन्हें बायनेरिज़ के रूप में कल्पना करते हैं, यह आपको सिखाने का सबसे अच्छा तरीका है कि HEX, OCT, DEC, और BIN प्रतिनिधित्व कैसे काम करता है।

और वैसे यदि आप एक पूर्णांक के रूप में 73 पढ़ रहे हैं, तो यह मेमोरी एड्रेस 0100 1001 को बाइनरी के रूप में संग्रहीत करता है यदि यह अहस्ताक्षरित है, और 111 ओक्टल के रूप में है जो आधार 8 नंबर प्रतिनिधित्व है। http://coderstoolbox.net/number/ देखें

शुभकामनाएँ

1
aelbuni 3 पद 2015, 19:37

जब आप अपने कोड में 0111 लिखते हैं तो संकलक यह मान लेगा कि ऑक्टल संख्या शून्य से शुरू होती है। यदि आपने 111 लिखा है तो यह दशमलव होगा।

C ++ 14 ने द्विआधारी शाब्दिक उपसर्ग जोड़ा ताकि आप जो चाहें प्राप्त करने के लिए 0b111 लिख सकें।

2
Sami Kuhmonen 3 पद 2015, 19:24