Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Copyright Nicholas Jordon - All Rights Reserved
- * License: GNU LGPL v3 or later
- * License URL: http://www.gnu.org/licenses/lgpl-3.0.html
- */
- class bitwise {
- private $xchng = array(
- 'bit' => array(
- '0000', '0001',
- '0010', '0011',
- '0100', '0101',
- '0110', '0111',
- '1000', '1001',
- '1010', '1011',
- '1100', '1101',
- '1110', '1111'
- ),
- 'val' => array(
- '0000' => '0', '0001' => '1',
- '0010' => '2', '0011' => '3',
- '0100' => '4', '0101' => '5',
- '0110' => '6', '0111' => '7',
- '1000' => '8', '1001' => '9',
- '1010' => '10', '1011' => '11',
- '1100' => '12', '1101' => '13',
- '1110' => '14', '1111' => '15'
- )
- );
- public function create_bit_str($int_input){
- $xchng = $this->xchng['bit'];
- // convert value to bits
- $vals = str_split((string) $int_input,2); // cast (str) incase they do (int)
- $values = '';
- foreach ($vals as $val) {
- $val = (int) $val;
- if(isset($xchng[$val])){
- $values .= $xchng[$val];
- }else{
- return FALSE;
- }
- }
- return $values;
- }
- public function create_val_str($str_input){
- $xchng = $this->xchng['val'];
- // convert bits to value
- $bits = str_split((string) $str_input,4); // cast (str) incase they do (int)
- $r_str = '';
- foreach ($bits as $bit) {
- $bit = $bit;
- if(isset($xchng[$bit])){
- $r_str .= $xchng[$bit];
- }else{
- return FALSE;
- }
- }
- return $r_str;
- }
- }
- // testing script
- $bit = new bitwise;
- $range = range(0,15);
- foreach ($range as $num) {
- foreach ($range as $cnum) {
- $org = $bit->create_bit_str($num & $cnum);
- $r1 = $bit->create_bit_str($num);
- $r2 = $bit->create_bit_str($cnum);
- echo ((string) $num).' & '.$cnum.' or '.var_export($r1,1).' & '.var_export($r2,1).' = '.var_export($org,1).' or '.var_export($bit->create_val_str($org),1).PHP_EOL;
- $org = $bit->create_bit_str($num | $cnum);
- echo ((string) $num).' | '.$cnum.' or '.var_export($r1,1).' | '.var_export($r2,1).' = '.var_export($org,1).' or '.var_export($bit->create_val_str($org),1).PHP_EOL;
- $org = $bit->create_bit_str($num ^ $cnum);
- echo ((string) $num).' ^ '.$cnum.' or '.var_export($r1,1).' ^ '.var_export($r2,1).' = '.var_export($org,1).' or '.var_export($bit->create_val_str($org),1).PHP_EOL.PHP_EOL;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement