कृपया मुझे बताएं कि मैं थोड़ा प्रिंट कैसे करूं, जैसे printf("%d",bit);
।मैं एक बिट कैसे मुद्रित करूं?
उत्तर
बिट सिर्फ एक पूर्णांक है कि, मूल्य आप कम से कम महत्वपूर्ण बिट में चाहते हैं तो यह है:
printf("%d", bit & 0x1);
यह करना चाहिए। & एक बाइनरी कर रहा है- और केवल पहले महत्वपूर्ण बिट सेट के साथ एक संख्या के साथ, तो आप पूर्णांक में बाकी सभी बिट्स को हटा रहे हैं।
n के (1..16 से मीटर या 32) एम-वें बिट प्रिंट करने के लिए:
void print_bit(n, m)
{
printf("%d", n & (1 << (m - 1)));
}
अगर आपके बिट काउंटर 0.
वह काफी काम नहीं करेगा। आप जिस बिट को चाहते हैं उसे मास्क कर रहे हैं, लेकिन आप उस बिट को जगह में छोड़ रहे हैं, इसलिए आपको 1 या 0 नहीं मिलेगा। उस बिट के लिए हमेशा 1 या 0 प्राप्त करने के लिए आपको वैरिएबल दाएं स्थानांतरित करने की आवश्यकता होगी, बदलाव नहीं मास्क छोड़ दिया। – Herms
ठीक है, याद किया, धन्यवाद। – Keltia
आपके फ़ंक्शन में क्या बिट है? और "एन" का उपयोग नहीं किया जाता है। क्या आपका मतलब है printf ("% d", क्या n & (1 << (एम? - 1)) – Koshmaar
पर शुरू होता है आप की जरूरत है - 1
बिट निकालें Herms की तुलना में अधिक सामान्यीकरण करने के लिए, आप ऐसा कर सकता है:
#define IsBitSet(val, bit) ((val) & (1 << (bit)))
/* ... your code ... */
printf ("%c", IsBitSet(bit, 0) ? '1' : '0');
printf Herms जवाब के बराबर है के रूप में है।
आप सी में bitfield के बारे में बात कर रहे हैं, तो आप ऐसा कर सकते हैं:
struct foo { int b:1; } myFoo;
printf("%c", myFoo.b ? '1' : '0');
वहाँ मैक्रो परिभाषा के अंत में एक लापता समापन कोष्ठक, कोई – bortzmeyer
अच्छा पकड़ है - यह तय – plinth
यह लगता है। थोड़ा राउंडअबाउट -। क्यों नहीं '((वैल) >> (बिट)) और 0x1' ताकि आप त्रिगुट के बजाय एक पूर्णांक के रूप में यह मुद्रित कर सकते हैं –
संबंधित प्रश्न: How do you set, clear, and toggle a single bit? सी और सी में एकल बिट पहुँच ++ की एक विस्तारित चर्चा है।
सी ++ जवाब C89 एक की तुलना में आसान है, देशी bool प्रकार के साथ:
_Bool b = 1;
printf("%d", b);
bools आकार आम तौर पर एक बिट नहीं हैं –
आप "संघ" का उपयोग कर सकते हैं::
bool b = true;
std::cout << b;
C99 काफी समान है
union bitshow {
unsigned bit1:1;
int i;
};
int main() {
union bitshow bit;
cin >> bit.i;
cout << bit.bit1;
return 0;
}
चाहेंगे सबसे महत्वपूर्ण प्रिंट कि थोड़ा, कम से कम महत्वपूर्ण बिट, या कुछ और? आप नहीं जानते, क्योंकि यह पोर्टेबल नहीं है। – interjay
यह एक अच्छा सवाल है जिसे रीफ्रिसिंग की आवश्यकता है, लेकिन मेरे पास अभी तक संपादन विशेषाधिकार नहीं हैं .... –