Mga operator ng bitwise (&, XOR, <<, ...) - 1

"Hi, Amigo!"

"Isa pang maliit na aralin tungkol sa mga bitwise operator."

"Alam mo na bilang karagdagan sa mga lohikal na operator na AT (&&), O (||) at HINDI (!), mayroon ding mga bitwise na operator na AT (&), O (|), HINDI (~), at XOR(^ ), tama ba?"

"Yep. Minsan nagbigay ng napakagandang aral si Bilaabo tungkol dito."

"Buweno, tungkol sa mga operator na ito. May dalawang bagay akong sasabihin sa iyo:"

"Una, maliban sa HINDI (~), maaari silang ilapat sa mga variable ng boolean, tulad ng mga lohikal na operator."

"Pangalawa, hindi naaangkop sa kanila ang tamad na pagsusuri."

"Tingnan ang halimbawang ito:"

Code Katumbas na code
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());
  }
 }
}

"Ang kaliwang bahagi ba ay mas compact kaysa sa kanan?"

"Oo."

"At pareho ba ang kahulugan nito?"

"Oo."

"Tama. Ngunit ngayon tingnan ang parehong expression gamit ang mga bitwise operator :"

Code Katumbas na code
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());
 }
 }
}

"Sa madaling salita, ang code ay pareho, ngunit ganap na bawat operasyon ay isasagawa."

"Tandaan na kung ang a ay null, ang isang exception ay itatapon kapag kinakalkula ang c2!"

"Ah. Mas nakikita ko na yun ngayon."