मैं सी ++ में किसी संख्या के साइन बिट तक पहुंचने में सक्षम होना चाहता हूं।मैं सी ++ में किसी संख्या के साइन बिट तक कैसे पहुंच सकता हूं?
int sign bit = number >> 31;
काम करने के लिए प्रकट होता है यह मेरे ऋणात्मक संख्याओं के लिए सकारात्मक संख्या के लिए 0
और -1
दे रही है: मेरे वर्तमान कोड कुछ इस तरह लग रहा है। हालांकि, मैं नहीं दिख रहा है कि कैसे मैं ऋणात्मक संख्याओं के लिए -1
मिलती है: अगर 12
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
तो है -12
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
है और स्थानांतरण यह 31 बिट
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
होगा जो 1 है, -1 नहीं, तो जब मैं इसे स्थानांतरित करता हूं तो मुझे -1 क्यों मिलता है?
संभव डुप्लिकेट (http: // stackoverflow। कॉम/प्रश्न/141525/पूर्ण-शुरुआती-गाइड-टू-बिट-स्थानांतरण) – msw
int sign_bit = (int) (संख्या> 0); – aviraldg
[दो के पूरक] के लिए (http://en.wikipedia.org/wiki/Two%27s_complement#Complement_of_a_positive_number) (जो कि अधिकांश आधुनिक सिस्टम उपयोग करते हैं), आपका -12 गलत है। इसे 0100 समाप्त करना चाहिए। –