c# - Bitwise operations -


ए) (Int32) एक्स | (इंट 32) वाई & lt; & lt; 16) ;

बी) (Int32) एक्स + (Int32) वाई * (Int32) Int16.MaxValue ; < / P>

दोनों बराबर नहीं होना चाहिए? मैं यह परीक्षण करने से जानता हूं कि उम्मीद की जाती है कि पहले काम करता है, लेकिन किसी कारण से दूसरा नहीं है दोनों एक्स और वाई शॉर्ट्स ( Int16 ) हैं, और वापसी का प्रकार एक पूर्णांक है ( Int32 )।

Y & lt नहीं चाहिए ; & lt; 16 & lt; => वाई * Int16.MaxValue ?

<पी > इच्छित व्यवहार प्राप्त करने के लिए, आपको 0x10000 (यानी UInt16.MaxValue + 1 ) के साथ गुणा करना होगा। Int16.MaxValue है 0x7fff

  5 & lt; & lt; 16 327680 5 * 0x10000 327680  

दशमलव प्रणाली से तुलना करें: यदि आप संख्या 5 से 500 "बदलाव" करना चाहते हैं, तो आपको 99 के साथ गुणा करने की आवश्यकता नहीं है, 99: -)


Comments

Popular posts from this blog

c# - ListView onScroll event -

PHP - get image from byte array -

Linux Terminal Problem with Non-Canonical Terminal I/O app -