कोटलिन बिटवाइज़ और बिट्सफ़्ट ऑपरेशंस (उदाहरणों के साथ)

कोटलिन बिटकॉइन और बिटशिफ्ट ऑपरेशन करने के लिए कई कार्य (इनफ़िक्स फॉर्म में) प्रदान करता है। इस लेख में, आप उदाहरणों की मदद से कोटलिन में बिट स्तर के ऑपरेशन करना सीखेंगे।

बिटवाइज़ और बिट शिफ्ट ऑपरेटरों का उपयोग केवल दो अभिन्न प्रकारों ( Intऔर Long) पर किया जाता है ताकि वे बिट-लेवल ऑपरेशन कर सकें।

इन ऑपरेशनों को बेहतर बनाने के लिए, कोटलिन ने इन्फिक्स नोटेशन का उपयोग करते हुए 7 कार्य प्रदान किए।

1. या

orसमारोह दो मानों का इसी बिट्स तुलना करती है। यदि दोनों में से कोई 1 है, तो यह 1. देता है, यदि नहीं तो यह 0. देता है, उदाहरण के लिए,

 12 = 00001100 (बाइनरी में) 25 = 00011001 (बाइनरी में) 12 और 25 00001100 या 00011001 ________ 00011101 = 29 (दशमलव में) बिटवेट या ऑपरेशन

उदाहरण: बिटवाइज़ या ऑपरेशन

 fun main(args: Array) ( val number1 = 12 val number2 = 25 val result: Int result = number1 or number2 // result = number1.or(number2) println(result) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 २ ९

2. और

andसमारोह दो मानों का इसी बिट्स तुलना करती है। यदि दोनों बिट्स 1 हैं, तो इसका मूल्यांकन 1 किया जाता है। यदि बिट्स में से 0 है, तो इसका मूल्यांकन 0. है। उदाहरण के लिए,

 12 = 00001100 (बाइनरी में) 25 = 00011001 (बाइनरी में) 12 और 25 00001100 का बिट ऑपरेशन और 00011001 ________ 00001000 = 8 (दशमलव में)

उदाहरण: बिटवाइज़ और ऑपरेशन

 fun main(args: Array) ( val number1 = 12 val number2 = 25 val result: Int result = number1 and number2 // result = number1.and(number2) println(result) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

3. ज़ोर

xorसमारोह दो मानों का इसी बिट्स तुलना करती है। यदि संबंधित बिट्स भिन्न हैं, तो यह 1. देता है यदि संबंधित बिट्स समान हैं, तो यह 0. देता है। उदाहरण के लिए,

 12 = 00001100 (बाइनरी में) 25 = 00011001 (बाइनरी में) बिटवाइज या 12 और 25 00001100 का संचालन 00011001 ________ 00010101 = 21 (दशमलव में)

उदाहरण: बिटवाइज़ एक्सर ऑपरेशन

 fun main(args: Array) ( val number1 = 12 val number2 = 25 val result: Int result = number1 xor number2 // result = number1.xor(number2) println(result) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 २१

4. निमंत्रण ()

फ़ंक्शन () फ़ंक्शन बिट पैटर्न को सम्मिलित करता है। यह प्रत्येक 0 से 1, और हर 1 से 0 बनाता है।

 35 = 00100011 (बाइनरी में) बिटवाइज पूरक 35 00100011 का संचालन ________ 11011100 = 220 (दशमलव में)

उदाहरण: बिटवाइज़ पूरक

 fun main(args: Array) ( val number = 35 val result: Int result = number.inv() println(result) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 -36

हमें 220 के बजाय आउटपुट -36 क्यों मिल रहा है?

ऐसा इसलिए है क्योंकि संकलक उस संख्या का 2 पूरक दिखा रहा है; बाइनरी नंबर का नकारात्मक अंकन।

किसी भी पूर्णांक n के लिए, 2 का n का पूरक होगा -(n+1)

 दशमलव बाइनरी 2 का पूरक --------- --------- ---------------------------- ----------- 0 00000000 - (11111111 + 1) = -00000000 = -0 (दशमलव) 1 00000001 - (11111110 + 1) = -11111111 = -256 (दशमलव) 12 00001100 - (11110011) +1) = -11110100 = -244 (दशमलव) 220 11011100 - (00100011 + 1) = -00100100 = -36 (दशमलव) नोट: 2 के पूरक की गणना करते समय अतिप्रवाह को अनदेखा किया जाता है।

35 का बिटवाइज़ पूरक 220 (दशमलव में) है। 2 का 220 का पूरक है -36। इसलिए, आउटपुट 220 के बजाय -36 है।

5. शाल

shlसमारोह बदलाव निर्दिष्ट बिट्स की निश्चित संख्या से बाईं ओर पैटर्न सा, और शून्य बिट्स कम आदेश स्थिति में स्थानांतरित कर दिया जाता है।

 212 (बाइनरी में: 11010100) 212 shl 1 का मूल्यांकन 424 (बाइनरी में: 110101000) 212 shl 0 का मूल्यांकन 212 (बाइनरी में: 11010100) 212 shl 4 का मूल्यांकन 3392 (बाइनरी में - 110101000000) से होता है

उदाहरण: बिटकॉइन लेफ्ट शिफ्ट

 fun main(args: Array) ( val number = 212 println(number shl 1) println(number shl 0) println(number shl 4) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 424 212 3392

6. श्री

shrसमारोह बदलाव निर्दिष्ट बिट्स के certin संख्या से सही करने के लिए pattery सा।

 212 (बाइनरी में: 11010100) 212 तीर्थ 1, 106 का मूल्यांकन करता है (बाइनरी में: 01101010) 212 तीर्थ 0 का मूल्यांकन 212 तक (बाइनरी में: 11010100) 212 तीर्थ 8 का मूल्यांकन 0 से (बाइनरी में: 00000000)

यदि संख्या 2 के पूरक हस्ताक्षरित संख्या है, तो साइन बिट को उच्च-क्रम वाले पदों में स्थानांतरित कर दिया जाता है।

 fun main(args: Array) ( val number = 212 println(number shr 1) println(number shr 0) println(number shr 8) )

जब आप कार्यक्रम चलाते हैं, तो निम्न होगा:

 106 212 0

7. अशर

ushrसमारोह बदलाव वाम-पंथी स्थिति में शून्य।

उदाहरण: हस्ताक्षरित और अहस्ताक्षरित राइट शिफ्ट

 fun main(args: Array) ( val number1 = 5 val number2 = -5 // Signed right shift println(number1 shr 1) // Unsigned right shift println(number1 ushr 1) // Signed right shift println(number2 shr 1) // Unsigned right shift println(number2 ushr 1) )

जब आप प्रोग्राम चलाते हैं, तो आउटपुट होगा:

 2 2 -3 2147483645

ध्यान दें, कैसे हस्ताक्षरित और अहस्ताक्षरित सही शिफ्ट फ़ंक्शन 2 के पूरक के लिए अलग तरह से काम करता है।

2 का पूरक 2147483645है 3

दिलचस्प लेख...