బిట్‌వైస్ ఆపరేటర్‌లు (&, 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());
 }
 }
}

"మరో మాటలో చెప్పాలంటే, కోడ్ ఒకటే, కానీ ఖచ్చితంగా ప్రతి ఆపరేషన్ చేయబడుతుంది."

"a శూన్యం అయితే, c2ని గణిస్తున్నప్పుడు మినహాయింపు ఇవ్వబడుతుందని గమనించండి!"

"ఆహ్. నేను ఇప్పుడు మరింత స్పష్టంగా చూడగలను."