2012-08-18 23 views
6

अजगर<< पायथन में क्या प्रतिनिधित्व करता है?

1 << 16 = 65536 

कहते हैं क्या आपरेशन अजगर में << प्रदर्शन करता है?

+3

http://wiki.python.org/moin/BitwiseOperators – jeremy

+1

[अंकगणित पारी] (http://en.wikipedia.org/wiki/Arithmetic_shift) – Buddy

+1

देखें http://docs.python.org/reference/expressions.html?highlight=bit%20shift#shifting-operations –

उत्तर

12

यह पायथन के लिए बायां शिफ्ट ऑपरेटर है। एक बाएं शिफ्ट ऑपरेशन, जैसा कि नाम कहता है, बाईं ओर बिट्स ले जाएं।

मान लीजिए आपके पास 2 जिसका द्विआधारी प्रतिनिधित्व है 0010. तो 2<<2 बिट्स बाईं ओर दो बार शिफ्ट करने का अर्थ है:

0010 -> 0100 -> 1000

1000 8 के लिए द्विआधारी प्रतिनिधित्व है। गणितीय रूप से, बाएं स्थानांतरित करना 2: a<<b == a*2^b की शक्ति द्वारा संख्या को गुणा करने जैसा ही है, लेकिन ऑपरेशन केवल स्थानांतरण द्वारा किया जाता है, यह गुणा करने से बहुत तेज है।

+0

क्या आप इस पर टिप्पणी कर सकते हैं कि यह अच्छा है या नहीं जहां संभव हो वहां बिट-शिफ्ट के साथ एक्सपोनिएशन को प्रतिस्थापित करने का विचार? – Genre

+0

@Genre यह एक अच्छा विचार है। थोड़ी सी शिफ्ट आमतौर पर एक असेंबली निर्देश होती है जबकि एक्सपोनिएशन में कई लोग लग सकते हैं। अच्छी पुस्तकालय और कंपाइलर उस मामले के लिए अनुकूलित करने का प्रयास कर सकते हैं जिसमें आधार 2 शक्ति है। एक कॉन यह है कि कोड कम पठनीय हो जाता है (1 << 16 2^16 के रूप में पठनीय नहीं है)। तो अगर आप पठनीयता की हानि की क्षतिपूर्ति करते हैं तो मूल्यांकन करने की आवश्यकता है। –

5

<< यह पायथन में बाएं-शिफ्ट ऑपरेटर है। अधिक जानकारी के लिए documentation पर एक नज़र डालें।

9

यह left shift operator

1<<16 तात्पर्य 1 16 बिट द्वारा छोड़ा स्थानांतरित किया जा रहा है।

3

इसके बारे में सोचने का एक और तरीका 1 बार 2^16 है।

तो तुम जब भी देखना एक्स < < y के रूप में यह व्याख्या:

x * 2^y

संबंधित मुद्दे