<< Operator in PHP [duplicate] - php

This question already has answers here:
Reference Guide: What does this symbol mean in PHP? (PHP Syntax)
(24 answers)
Closed 9 years ago.
I've been trying to get a code together that would deduce what alternatives have been check in a multi-choice exam, but using sums of powers of two.
I found the following code online, but I'm not sure HOW it works, especially the operator <<. I could not find this on Google or PHPDoc.
Thank you.
$aSums = array();
for ($iCount = 0; $iCount < 32; $iCount++)
{
$iMask = 1 << $iCount;
if (($iNumber & $iMask) != 0)
$aSums[] = $iMask;
}
return $aSums;

It's a bitwise shift left, that is, multiply by 2^N.

It's a bitwise operator Shift left. From PHP documentation:
Shift the bits of $a $b steps to the left (each step means "multiply by two")

Related

PHP numbers logic [duplicate]

This question already has answers here:
Reference Guide: What does this symbol mean in PHP? (PHP Syntax)
(24 answers)
What does the percent sign mean in PHP?
(6 answers)
Closed 3 years ago.
I just started to learn PHP deeper for Zend PHP certification and I found this code, which actually works. Can someone explain me the logic behind this?
<?php
$num = 20% - 8;
echo $num; // 4
What you're seeing is the modulus operator, which in essence asks "What is the remainder of 20 divided by -8".
So you might ask, why isn't it negative 4? From the manual,
The result of the modulo operator % has the same sign as the dividend — that is, the result of $a % $b will have the same sign as $a.
See the PHP: Arithmetic Operators for more documentation.
% is not per cent, but modulus, cf. https://en.m.wikipedia.org/wiki/Modular_arithmetic
20 = 2 * 8 + 4, therefore, 20 % 8 = 4

What is the meaning of this symbol ">>" in PHP [duplicate]

This question already has answers here:
Reference Guide: What does this symbol mean in PHP? (PHP Syntax)
(24 answers)
Closed 7 years ago.
I found this example and i can't understand the result :
$x = 5;
echo $x>>2;
output :
1
Can you explained for me please
Thanks
$a >> $b Shift right Shift the bits of $a $b steps to the right (each step means "divide by two")
So if 5 in binary is: 101
5>>1 is 2 in binary 10
5>>2 is 1 in binary 1
This operator if common in other languages such as C.
Source

What does `<<` mean when declaring a variable in PHP? [duplicate]

This question already has answers here:
Reference Guide: What does this symbol mean in PHP? (PHP Syntax)
(24 answers)
Strange print behaviour in PHP? [duplicate]
(2 answers)
Closed 10 years ago.
I was looking at this article about facebook's HipHop Virtual Machine (HHVM) when I noticed this line:
<?php
$u_bytes =
$p_bytes = 100 << 20;
I tested it by running echo 100 << 20; and the value was 104857600. What does << 20 do?
Edit
Based on the answers it's a bitwise operator (bit shift [left]). Example:
100 = 000000000000000000001100100
^ `<< 20` moves this bit 20 bits to the left
104857600 = 110010000000000000000000000
This is a bit shift left.
You can learn more on how it works in PHP directly on PHP Manual: http://php.net/manual/en/language.operators.bitwise.php

Strange print behaviour in PHP? [duplicate]

This question already has answers here:
Reference Guide: What does this symbol mean in PHP? (PHP Syntax)
(24 answers)
Closed 9 years ago.
Why does the following code output 128?
<?php
print 4 << 5;
?>
Because it's a bitwise operator. I think it means 4 multiplied to 2^5 because that operator means
Shift the bits of $a $b steps to the left (each step means "multiply
by two")
so it's five steps. It's 4 * 2 * 2 * 2 * 2 * 2 (But I'm guessing here; everything happens at bit level).
Refer to Bitwise Operators:
We have to find 4 << 5. It means shift the bits of 4 5 times to the left:
4 is 00000000000000000000000000000100
4 << 5 after shifting is 00000000000000000000000010000000
00000000000000000000000010000000 is 2^7 = 2*2*2*2*2*2*2 = 128

What does this PHP syntax mean [duplicate]

This question already has answers here:
Closed 12 years ago.
Possible Duplicate:
Reference - What does this symbol mean in PHP?
Can someone tell me what's the << 0 for? and other more common alternatives if they exist
$newvalue += 1 << 0;
<< is the bitwise left-shift operator.
In this case is seems pretty pointless, since left-shifting 1 by 0 equals 1.
<< 0 does nothing. It is probably there to indicate that the value is some sort of flag. If it was something other than 0, than it would shift the value (1) left by x bits, where is is the value replacing 0.

Categories