Esempio n. 1
0
 /**
  * @param $a
  * @param $b
  * @param $cond
  */
 public function cswapValue(&$a, &$b, $cond)
 {
     $size = max(strlen($this->adapter->baseConvert($a, 10, 2)), strlen($this->adapter->baseConvert($b, 10, 2)));
     $mask = 1 - intval($cond);
     $mask = str_pad('', $size, $mask, STR_PAD_LEFT);
     $mask = $this->adapter->baseConvert($mask, 2, 10);
     $tA = $this->adapter->bitwiseAnd($a, $mask);
     $tB = $this->adapter->bitwiseAnd($b, $mask);
     $a = $this->adapter->bitwiseXor($this->adapter->bitwiseXor($a, $b), $tB);
     $b = $this->adapter->bitwiseXor($this->adapter->bitwiseXor($a, $b), $tA);
     $a = $this->adapter->bitwiseXor($this->adapter->bitwiseXor($a, $b), $tB);
 }
Esempio n. 2
0
 /**
  * @param $integer
  * @param $bitSize
  * @return int|string
  */
 public function makeNegative($integer, $bitSize)
 {
     return $this->math->bitwiseXor($this->math->leftShift(1, $this->fixSize($bitSize)), $integer);
 }