note 58272 added to language.operators.bitwise

From: Date: Sat, 29 Oct 2005 16:50:03 +0000
Subject: note 58272 added to language.operators.bitwise
Groups: php.notes 
Request: Send a blank email to php-notes+get-97798@lists.php.net to get a copy of this message
For those who were searching for a way to actually rotate the bits of a number, here are some little functions I wrote: <?php function bitRotate32($value,$amount) { if ($amount>0) { $amount %= 32; $value = ($value<<$amount) | ($value>>(32-$amount)); } elseif ($amount<0) { $amount = -$amount%32; $value = ($value>>$amount) | ($value<<(32-$amount)); } return $value; } function bitRotate($value,$amount,$bits) { $mask = ($bits<32) ? 0x7fffffff >> (31-$bits) : 0xffffffff; if ($amount>0) { $amount %= $bits; $value = ($value<<$amount) | ($value>>($bits-$amount)); } elseif ($amount<0) { $amount = -$amount%$bits; $value = ($value>>$amount) | ($value<<($bits-$amount)); } return $value & $mask; } // test the rotation: $test = 4123; for ($i=0; $i<64; $i++) { $value = bitRotate($test,-$i,8); // rotates 8 bits to the left (-$amount) echo sprintf("%032b<br/>",$value); } ?> ---- Manual Page -- http://www.php.net/manual/en/language.operators.bitwise.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+58272 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+58272&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+58272&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+58272&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+58272&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+58272&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+58272&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+58272&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+58272&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#97798) next »