Avatar ·

Go में << और >> ऑपरेटर: बिटवाइज़ लेफ्ट और राइट शिफ्ट

सभी को नमस्ते! मैंने अभी-अभी Go सीखना शुरू किया है और `<<` और `>>` ऑपरेटरों पर ध्यान गया। डॉक्यूमेंटेशन में लिखा है कि ये शिफ्ट ऑपरेटर हैं, लेकिन मुझे पूरी तरह से समझ नहीं आ रहा कि ये प्रैक्टिस में कैसे काम करते हैं। यहाँ मेरे द्वारा लिखा गया एक कोड उदाहरण है: ```go package main import "fmt" func main() { x := 4 y := x << 2 z := x >> 1 fmt.Println(y, z) // आउटपुट: 16 2 } ``` मैंने उम्मीद की थी कि `x << 2` का परिणाम 8 (4 * 2) होगा, और `x >> 1` का परिणाम 2 (4 / 2) होगा। परिणाम 16 और 2 ने मुझे भ्रमित कर दिया। लेफ्ट शिफ्ट 2 ने 4 से गुणा क्यों किया, 2 से नहीं? और ये ऑपरेटर वास्तव में क्या मतलब रखते हैं? इसके अलावा, मैंने कॉन्स्टेंट परिभाषित करते समय `1 << iota` के संदर्भ में `<<` का उपयोग देखा है। क्या आप समझा सकते हैं कि यह कैसे काम करता है? मैंने बिटवाइज़ ऑपरेशन को समझने की कोशिश की, लेकिन बाइनरी सिस्टम में उलझ गया। विस्तृत स्पष्टीकरण के लिए आभारी रहूंगा।