this वेबसाइट के अनुसार, मैं 16 बिट पूर्णांक की 2 आयामी सरणी के साथ एक भूलभुलैया का प्रतिनिधित्व करना चाहता हूं।सी ++ में आप बिटवाई झंडे का उपयोग कैसे करते हैं?
प्रत्येक 16 बिट पूर्णांक निम्न जानकारी धारण करने के लिए की जरूरत है:
यहाँ एक तरह से यह करने के लिए (यह कोई एक ही रास्ता भी तरह से) है: एक 12x16 भूलभुलैया ग्रिड के रूप में एक सरणी मीटर [दर्शाया जा सकता है 16] [12] 16-बिट पूर्णांक के। प्रत्येक सरणी तत्व होगा ग्रिड में केवल एक प्रासंगिक सेल के लिए सभी जानकारी, इस तरह मैप किया पूर्णांक बिट्स के साथ शामिल हैं:
alt text http://www.mazeworks.com/mazegen/mazetut/tut5.gif
एक दीवार नीचे दस्तक, एक सीमा निर्धारित करते हैं, या एक विशेष मार्ग बनाने के लिए, हमें बस एक या दो सरणी तत्वों में बिट्स को फ़्लिप करना है।
मैं 16 बिट पूर्णांक पर बिटवाई झंडे का उपयोग कैसे करूं ताकि मैं उन बिट्स में से प्रत्येक को सेट कर सकूं और जांच कर सकूं कि वे सेट हैं या नहीं।
मैं इसे आसानी से पठनीय तरीके से करना चाहता हूं (यानी, सीमा।, सीमा.ई, दीवारें, आदि)।
यह आमतौर पर सी ++ में कैसे किया जाता है? क्या मैं प्रत्येक का प्रतिनिधित्व करने के लिए हेक्साइडसिमल का उपयोग करता हूं (यानी, Walls.N = 0x02, Walls.E = 0x04, आदि)? क्या मुझे एक enum का उपयोग करना चाहिए?
How do you set, clear, and toggle a single bit? भी देखें।
दुर्भाग्य से यह पोर्टेबल नहीं है क्योंकि बिट्स का क्रम संकलक विशिष्ट है। –
इसके अलावा, मुझे यकीन नहीं है कि बूल बिटफील्ड के लिए एक समर्थित प्रकार है, अगर हस्ताक्षर किए गए तो यह अधिक पोर्टेबल होगा। –
हां बूल बिटफील्ड के लिए समर्थित है, लेकिन आप सही हैं, उनका ऑर्डरिंग पूरी तरह से कंपाइलर तक है और आम तौर पर एंडियनस – KPexEA