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` के संदर्भ में `<<` का उपयोग देखा है। क्या आप समझा सकते हैं कि यह कैसे काम करता है? मैंने बिटवाइज़ ऑपरेशन को समझने की कोशिश की, लेकिन बाइनरी सिस्टम में भ्रमित हो जाता हूँ। विस्तृत स्पष्टीकरण के लिए आभारी रहूँगा।