में वाम पैडिंग मैं उस मैक्रो कुछ इस तरह दिखता है:"बिटवाइस और" और सी ++
Foo(x) ((x - '!') & 070)
अगर मैं निम्नलिखित कोड फोन:
Foo('1') => 16
हालांकि, अगर मैं फोन निम्नलिखित कोड:
(('1' - '!') & 70) => 0
तो मेरा सवाल यह है कि, यहां क्या हो रहा है? x & 070
x
पर गणना क्यों करता है लेकिन x & 70
0 पर गणना करता है?
मेरा अनुमान है कि बाईं ओर अतिरिक्त 0 को 1 के बजाय 2 बाइट लेने के लिए 60 मजबूर कर रहा है। उस स्थिति में, बिटवाई & निम्नानुसार नहीं होगा?
0000 0000 0001 0000 '16
0000 0000 0100 0110 & '70
-------------------
0000 0000 0000 0000
मुझे इसका उत्तर पता था (0 उपसर्ग = ऑक्टल स्थिर) लेकिन मैं कर सकता हूं ई प्रोग्रामिंग के 20 से अधिक वर्षों में ईमानदारी से कहें, मैंने इसे कभी नहीं देखा है। ऐसा लगता है कि यह उन चीजों में से एक है जो ऐसा प्रतीत होता है जब यह उपयोगी होता, शायद टेलेटाइप मशीनों या जो भी हो, उससे कुछ करना पड़ता है। एक एम्बेडेड लड़के के रूप में, मैं हमेशा उलझन में हूं कि बाइनरी स्थिरांक के लिए 'बी' उपसर्ग की तरह कुछ नहीं है (हाँ, मेरे पास सी और सी ++ में ऐसा करने का अपना तरीका है, यह बहुत खराब है कि यह भाषा में नहीं बनाया गया है)। – Dan