बिटवाइज़ ऑपरेटर्स (&, XOR, <<, ...) - 1

"हाय, अमीगो!"

"बिटवाइज़ ऑपरेटरों के बारे में एक और छोटा सबक।"

"आप जानते हैं कि तार्किक ऑपरेटरों AND (&&), OR (||) और NOT (!) के अलावा, बिटवाइज़ ऑपरेटर AND (&), OR (|), NOT (~), और XOR(^) भी हैं ), सही?"

"हाँ। बिलाबो ने एक बार इस बारे में बहुत अच्छी सीख दी थी।"

"ठीक है, इन ऑपरेटरों के बारे में। मुझे आपको दो बातें बतानी हैं:"

"सबसे पहले, NOT (~) को छोड़कर, उन्हें तार्किक ऑपरेटरों की तरह बूलियन चर पर लागू किया जा सकता है।"

"दूसरा, आलसी मूल्यांकन उन पर लागू नहीं होता है।"

"इस उदाहरण को देखें:"

कोड समतुल्य कोड
if (a != null && a.getName() != null && c != null)
{
 c.setName(a.getName());
}
if (a != null)
{
 if (a.getName() != null)
 {
  if (c != null)
  {
   c.setName(a.getName());
  }
 }
}

"क्या बाईं ओर दाईं ओर से अधिक कॉम्पैक्ट है?"

"हां।"

"और क्या इसका एक ही अर्थ है?"

"हां।"

"बिल्कुल सही। लेकिन अब उसी अभिव्यक्ति को बिटवाइज़ ऑपरेटरों का उपयोग करते हुए देखें :"

कोड समतुल्य कोड
if (a != null & a.getName() != null & c != null)
{
 c.setName(a.getName());
}
boolean c1 = (a != null);
boolean c2 = (a.getName() != null);
boolean c3 = (c != null);
if (c1)
{
 if (c2)
 {
  if (c3)
  {
   c.setName(a.getName());
 }
 }
}

"दूसरे शब्दों में, कोड वही है, लेकिन बिल्कुल हर ऑपरेशन किया जाएगा।"

"ध्यान दें कि यदि कोई शून्य है, तो सी 2 की गणना करते समय अपवाद फेंक दिया जाएगा!"

"आह। मैं इसे अब और अधिक स्पष्ट रूप से देख सकता हूं।"