क्योंकि वे मौलिक ऑपरेशन हैं।
विचार की एक ही पंक्ति से, आप तर्क कर सकते हैं कि इसके अलावा कुछ वास्तविक दुनिया उपयोग करता है, क्योंकि इसे पूरी तरह से घटाव (और नकारात्मकता) और गुणा के साथ बदला जा सकता है। लेकिन हम जोड़-तोड़ करते हैं क्योंकि यह एक मौलिक ऑपरेशन है।
और एक पल के लिए मत सोचिए कि सिर्फ इसलिए कि आपने बिटवाइज़ ऑपरेशन्स की बहुत ज़रूरत नहीं देखी है, इसका मतलब यह नहीं है कि वे बहुत बार उपयोग नहीं किए जाते हैं। वास्तव में, मैंने लगभग हर भाषा में बिटकॉइन ऑप्स का उपयोग किया है जो मैंने बिट मास्किंग जैसी चीजों के लिए उपयोग किया है।
मेरे सिर के ऊपर से, मैंने इमेज प्रोसेसिंग, बिटफिल्ड और झंडे, टेक्स्ट प्रोसेसिंग के लिए बिटवाइज़ ऑप्स का उपयोग किया है (उदाहरण के लिए, एक विशेष वर्ग के सभी वर्ण अक्सर एक आम बिट पैटर्न साझा करते हैं), एन्कोडिंग और क्रमबद्ध डेटा को डिकोड करते हुए, वीएम या सीपीयू को डिकोड करते हैं। opcodes, और इतने पर। बिटवाइज़ ऑप्स के बिना, इनमें से अधिकांश कार्यों को कार्य को कम मज़बूती से या खराब पठनीयता के साथ करने के लिए कई गुना अधिक जटिल संचालन की आवश्यकता होगी।
उदाहरण के लिए:
// Given a 30-bit RGB color value as a 32-bit int
// A lot of image sensors spit out 10- or 12-bit data
// and some LVDS panels have a 10- or 12-bit format
b = (color & 0x000003ff);
g = (color & 0x000ffc00) >> 10;
r = (color & 0x3ff00000) >> 20;
// Going the other way:
color = ((r << 20) & 0x3ff00000) | ((g << 10) & 0x000ffc00) | (b & 0x000003ff);
RISC- टाइप CPUs के लिए CPU निर्देशों को डिकोड करना (जैसे कि किसी अन्य प्लेटफॉर्म का अनुकरण करते समय) ऊपर के रूप में एक बड़े मूल्य के हिस्से को निकालने की आवश्यकता होती है। कभी-कभी, गुणा और भाग और मोडुलो इत्यादि के साथ इन ऑपरेशनों को करना, बिटकॉइन ऑप्स के बराबर दस गुना धीमा हो सकता है।