John Davidson

bit manipulation - PHP flip 32bit integer

0 comments
Message:


get 32 bit unsigned integer. Flip all the bits (0->1 and 1->0 ) and return the result as an unsigned integer.


Take 1 for example, as unsigned 32-bits is 00000000000000000000000000000001 and doing the flipping we get 11111111111111111111111111111110 which in turn is 4294967294.


I can turn decimal number to binary , but it does not contain 32 bits to flip.
Please help me with this.



My Answer:
You can achieve this by using bitwise operators in PHP. Here's a function that takes a 32-bit unsigned integer, flips all the bits, and returns the result as an unsigned integer:

php
function flipBits($num) {
// Convert the number to a 32-bit binary string
$binary = str_pad(decbin($num), 32, '0', STR_PAD_LEFT);

// Flip all the bits
$flipped = '';
for ($i = 0; $i < 32; $i++) {
$flipped .= $binary[$i] == '0' ? '1' : '0';
}

// Convert the flipped binary string back to an unsigned integer
$result = bindec($flipped);

return $result;
}

// Test the function with the example given
echo flipBits(1); // Output: 4294967294


You can use this function to flip the bits of any 32-bit unsigned integer.

Rate this post

5 of 5 based on 2566 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us