Strona 1 z 1

zakumanie zastosowania operatorow bitowych

Napisane: piątek, 6 kwietnia 2012, 20:48
przez jawa
Probuje zakumac w/w zastosowania i zaczalem sie nimi bawic czy moze mi ktos wyjasnic dlaczego po zmianie wartosci $a=1 (0001) na $a =8 (1000)nadal wyswietla mi sie true ??Myslalem ze chodzi oto ze jak podstawie sobie wartosci w : if (check ($x, $a)); to bedzie:

if ($x=0011 * $0001) <<--bo koniunkcja jest iloczynem logicznym wiec: wynik 0001 czyli true
echo "true";

else
echo"false";
}

Postanowilem wiec podstawic $a=8 //1000 i nadal jest true mimo ze wynik koniunkcji jest 0 i " if ($x=0011 * $1000)" -false

KOD:

$a=1; // 0001
$b=2; // 0010
$c=4; // 0100

$x = $a | $b ;
$y = $a | $b | $c;


if (check ($x, $a));

function check ($xxx, $aaa)

{
if ($xxx & $aaa)
echo "true";

else
echo"false";
}

Moglby mi ktos pomoc i wyprowadzic z bledu...cos podpowiedziec?

Re: zakumanie zastosowania operatorow bitowych

Napisane: piątek, 6 kwietnia 2012, 21:00
przez Morfidon
Operator bitowy koniunkcji to & (ampersand), a nie * (asterisk), poza tym co to w ogóle za zapis?

"$x=0011 * $0001"

$x = 0011 ? wypisz sobie echo $x i zobacz co pod tym jest.

$0001? co to za zmienna? jaką ma wartość?

Re: zakumanie zastosowania operatorow bitowych

Napisane: poniedziałek, 9 kwietnia 2012, 18:37
przez jawa
Oj...te zapisy przed napisem KOD to tylko sposob mojego rozumowania......co do ampersanta to tylko tutaj wyswietla sie cos innego po wcisnieciu SHIFT +7 nie wiem czemu..:-)
chodzilo mi oto ze:

$a=1;
$b=2;
$c=4;


$x = $a | $b ;
$y = $a | $b | $c;



if (check ($x, $a));
function check ($xxx, $aaa)
{
if ($xxx & $aaa)
echo "true";

else
echo"false";
}
Chcialem zapytac czy sposob dzialania tego jest nastepujacy:

$a=1 czyli 0001
$b=2 czyli 0010
wynika z tego ze :
$x = 0011

wiec w domysle powyzszy zapis bedzie wygladal tak?

if (check (0011, 0001));
function check (0011,0001)
{
if (0011 & 0001) <=====tu jest ampersant
echo "true";

else
echo"false";
}

..........wiec
0011
0001
----------------
0001 czyli true wiec wyswietli true
Lecz jesli pod $a podstawie 8

..........wiec
0011
1000
----------------
0000 czyli false a wyswietla true
Jesli cos jest nie tak w moim pojmowaniu prosze o sugestie

Re: zakumanie zastosowania operatorow bitowych

Napisane: wtorek, 10 kwietnia 2012, 11:00
przez Morfidon

Code: Zaznacz cały

$a=1; 
$b=8;

function check ($xxx, $aaa)
{
  if ($xxx & $aaa)
    echo "true";
  else 
    echo"false";
}

check($a, $b);
mi tam to wyświetla false.

Re: zakumanie zastosowania operatorow bitowych

Napisane: środa, 11 kwietnia 2012, 19:08
przez jawa
Wedlug Twojego kodu mi rowniez dziala....ale wg. mojego w ktorym :
$x = $a | $b ; i $a=8; $b=2;


if (check ($x, $a));

function check ($xxx, $aaa)

{
if ($xxx & $aaa)
echo "true";

else
echo"false";
}

Niezaleznie jaka wartosc wpisze pod $a zawsze jest true

Re: zakumanie zastosowania operatorow bitowych

Napisane: środa, 11 kwietnia 2012, 21:34
przez Morfidon
To całkiem logiczne, skoro $x składa się ze zmiennej $a suma $b, to część wspólna ($a suma $b) z $a musi dać true.