मानते हुए बिट्स Iterating बिट्स मेरे पास चार "सी" है जिसका ascii कोड 0110 0111
है। मैं अपने बिट्स पर कैसे पुन: प्रयास कर सकता हूं? मैं इन 1 और 0 के से वेक्टर बनाना चाहता हूं ....एक char
एक char
उत्तर
आप उन्हें आसानी से बिटवाइज़ ऑपरेटर्स का उपयोग करने पर पुनरावृति कर सकते हैं:
char c = 'C';
for (int i = 0; i < 8; ++i)
{
// extract the i-th bit
int b = ((c & 1<<i) >> i);
// b will be 1 if i-th bit is set, 0 otherwise
// do whatever you want with b
}
आप इसे अनुकूलित कर सकते हैं (जैसा कि टिप्पणी में सुझाव दिया):
int b = ((c >> i) & 1);
एक वर्ण में एक पूर्णांक मान है। कुछ इस तरह काम करेगा:
int myChar = 42;
String binstr = Integer.toBinaryString(myChar);
बाकी मैं एक व्यायाम के रूप में आप के लिए छोड़ देंगे - लेकिन तुम सब अब क्या करना है अपने बाइनरी मान की स्ट्रिंग प्रतिनिधित्व पर पुनरावृति है और जो कुछ भी यह है कि आप की योजना बनाई थी करना करने पर
बिटवाइज़ आपरेशन तेजी से और शायद बेहतर जवाब कर रहे हैं। उपर्युक्त समाधान शायद पढ़ने के लिए आसान है। –
बस प्रत्येक स्थिति में आप के बारे में परवाह पर बिटवाइज़ चेकों का उपयोग करें। निम्नलिखित की तरह कुछ एरे bits
बनाएगा जो व्यक्तिगत मान रखता है।
char c = 'C';
int[] bits = new int[8];
int j = 0;
for(int i = 1; i <= 256; i *= 2){
bits[j++] = (c & i) > 0 ? 1 : 0;
}
"i * = 2" को "i << 1" में बदला जा सकता है, मुझे आश्चर्य है? –
@ जेफ, यकीन है, लेकिन जैसा कि यह खड़ा है यह एक सभ्य, सही और पठनीय उत्तर है। इस तरह के लटकन को एक डाउनवोट योग्यता नहीं चाहिए। –
मैंने वोट नीचे नहीं दिया। असल में मैंने वोट दिया और आपके एक अनियंत्रित संस्करण को प्रस्तुत किया। पीपीएल को वोटों को समझाना चाहिए। –
आप बिटवाइज़ संचालन के साथ ऐसा करना होगा:
अर्थात्:
while (my_char > 0) {
if my_char & 1
char_vector.push 1 // if the right most bit is 1
else
char_vector.push 0 // right most bit must be 0 if we fell through to the else
my_char = my_char >> 1 // right shift one position
}
यदि आप के बाद आप सही पारी, आप पैड शेष 0s साथ char_vector कर सकते हैं, जरूरत है शून्य करने के लिए।
यह मुझे जावा नहीं दिखता है: -/ –
सी-जैसे छद्म कोड को क्षमा करें। ;) क्या यह समझ में नहीं आता है, या आप बस उल्लेख कर रहे हैं कि मैंने वाक्य रचनात्मक रूप से सही कोड नहीं लिखा है? (जो निश्चित रूप से, मैं इरादा नहीं था) –
char c = 'C';
Vector<Boolean> vector = new Vector<Boolean>(16);
for (int i = Character.SIZE-1; i >=0; --i) {
int num = c >> i;
boolean set = (num & 1) == 1;
vector.add(Boolean.valueOf(set));
}
unrolled पाश:
int[] bits = new int[8]
bits[0] = (c & 1) > 0 ? 1 : 0;
bits[1] = (c & 2) > 0 ? 1 : 0;
bits[2] = (c & 4) > 0 ? 1 : 0;
bits[3] = (c & 8) > 0 ? 1 : 0;
bits[4] = (c & 16) > 0 ? 1 : 0;
bits[5] = (c & 32) > 0 ? 1 : 0;
bits[6] = (c & 64) > 0 ? 1 : 0;
bits[7] = (c & 128) > 0 ? 1 : 0;
- 1. एक कॉन्स्ट char * चर
- 2. एक CFStringRef को char *
- 3. एक char को NSString
- 4. char ** से const char **
- 5. char
- 6. char *
- 7. char
- 8. "char"
- 9. char
- 10. char
- 11. char *
- 12. "const char *" से "char" त्रुटि
- 13. मेमोरी आवंटन char * और char []
- 14. स्ट्रैट एक स्ट्रिंग पर एक char concat?
- 15. stl map <char*,char*> destructor
- 16. char (char * नहीं) से std :: स्ट्रिंग
- 17. char * buffer
- 18. charWindowText char []
- 19. utf8 char
- 20. एक char * को एक कॉन्स char * असाइन करना क्यों संभव है?
- 21. स्ट्रिंग में एक char का सूचकांक खोजें?
- 22. एक char array के भाग को स्ट्रिंग
- 23. कृपया सेट-कंटेंट $ zipfilename ("पीके" + [char] 5 + [char] 6 + ("$ ([char] 0)" * 18)) पावरहेल स्क्रिप्ट की लाइन
- 24. बिना हस्ताक्षर किए गए char का परिणाम << unsigned char हस्ताक्षरित नहीं है char
- 25. क्या char * = "string" या char * = new char [6] को नष्ट करने की आवश्यकता है?
- 26. अद्वितीय_ptr <char[]> से unique_ptr <const char []>
- 27. char और int
- 28. कॉन्स char * प्रारंभिकरण
- 29. स्ट्रैपी के साथ char * और char [] के बीच अंतर()
- 30. varchar2 (एन बाइट | CHAR) डिफ़ॉल्ट -> CHAR या बाइट
मैं साथ जाऊंगा (सी >> i) और 1 – Jimmy
गीज़, दोस्तों, जब प्रश्न होमवर्क की तरह ही दिखता है, कोड न दें ... सही दिशा में बस एक झुकाव! –
ओपी की प्रोफाइल से पकड़ा गया, यह काफी स्पष्ट है कि वह छात्र नहीं है। –