यह एक प्रकार का सरल संपीड़न है जहां आप एक बूलियन / बाइनरी राज्यों को संग्रहीत करने के लिए एक संख्यात्मक चर का उपयोग करते हैं, दोहरीकरण और इस तथ्य का उपयोग करते हैं कि प्रत्येक दोहरीकरण संख्या 1 + सभी पिछले वाले का योग है।
मुझे यकीन है कि यह एक पुरानी, प्रसिद्ध तकनीक होनी चाहिए, मैं जानना चाहता हूं कि इसे ठीक से संदर्भित करने के लिए क्या कहा जाता है। मैंने हर तरह से कई खोजों को किया है जो मैं इसका वर्णन करने के बारे में सोच सकता हूं, लेकिन कुछ ब्लॉग लेखों से परे कुछ भी नहीं मिला जहां लेख लेखकों ने खुद को यह पता लगाया है और यह नहीं जानते कि इसे क्या कहा जाए, या तो ( उदाहरण 1 ) उदाहरण 2 )।
उदाहरण के लिए, यहाँ एक बहुत ही सरल कार्यान्वयन अवधारणा का वर्णन करने का इरादा है:
packStatesIntoNumber () {
let num = 0
if (this.stateA) num += 1
if (this.stateB) num += 2
if (this.stateC) num += 4
if (this.stateD) num += 8
if (this.stateE) num += 16
if (this.stateF) num += 32
return num
}
unpackStatesFromNumber (num) {
assert(num < 64)
this.stateF = num >= 32; if (this.stateF) num -= 32
this.stateE = num >= 16; if (this.stateE) num -= 16
this.stateD = num >= 8; if (this.stateD) num -= 8
this.stateC = num >= 4; if (this.stateC) num -= 4
this.stateB = num >= 2; if (this.stateB) num -= 2
this.stateA = num >= 1; if (this.stateA) num -= 1
}
आप बिटवाइज़ ऑपरेटर्स, बेस 2 नंबर पार्सिंग, एनम का भी उपयोग कर सकते हैं ... इसे लागू करने के कई और अधिक कुशल तरीके हैं, मैं दृष्टिकोण के नाम पर आम तौर पर दिलचस्पी रखता हूं।
bool
को आमतौर पर आंतरिक रूप से 32 बिट पूर्णांक के रूप में संग्रहीत किया जाता है। जैसे, पैकिंग 32 के एक कारक का अंतर बना सकती है। यह वास्तव में बहुत कुछ है। मेरा मतलब है, हम प्रोग्रामर हमेशा अपने आधे संसाधनों को फेंकने के लिए तैयार हैं, लेकिन मैं उनमें से 97% को फेंकने के लिए आम तौर पर अनिच्छुक हूं। इस तरह के अपशिष्ट कारक आसानी से महत्वपूर्ण उपयोग के मामलों को चलाने और स्मृति से बाहर चलाने के बीच अंतर कर सकते हैं।
enums
, और उनके पास एकFlags
विशेषता हो सकती है । वे आपके कोड को अधिक सरल बना सकते हैं।