मुझे समझ नहीं नहीं क्यों यह मुझे एक ही जवाब देता है:बिट बदलाव
long long a = 3265917058 >> 24;
std::cout << a << std::endl; //194
long long ip = 3265917058;
long long b = ip >> 24;
std::cout << b << std::endl; //194
लेकिन ऐसा नहीं:
long long a = (3265917058 << 16) >> 24;
std::cout << a << std::endl; //240
long long ip = 3265917058;
long long b = (ip << 16) >> 24;
std::cout << b << std::endl; //12757488 - **i want this to be 240 too!**
अद्यतन: मैं 32 बिट पारी चाहते हैं, लेकिन कैसे कर सकते हैं मैं 32 बिट एक संख्या को बदलता हूं जो एक int चर के लिए बहुत बड़ा है? अद्यतन 2: मेरा जवाब हस्ताक्षरित int ip बनाना है। तो सब ठीक हो जाएगा।
लेकिन अगर मैं चर का उपयोग करता हूं तो मुझे जवाब 240 कैसे प्राप्त होगा? मैं int में 3265917058 स्टोर नहीं कर सकता। – Stals
@Stals: आपका स्थिर अभी भी 32 बिट्स में फिट बैठता है - यह सिर्फ मॉड्यूलो 2^32 का इलाज करता है - थोड़ा प्रतिनिधित्व समान है। एक सभ्य संकलक आपको इसके बारे में चेतावनी देना चाहिए - क्या आपके पास चेतावनियां सक्षम हैं? –
सक्षम, लेकिन कोई चेतावनी नहीं। – Stals