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
Post a Comment