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?
zakumanie zastosowania operatorow bitowych
Re: zakumanie zastosowania operatorow bitowych
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ść?
"$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
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
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
Code: Zaznacz cały
$a=1;
$b=8;
function check ($xxx, $aaa)
{
if ($xxx & $aaa)
echo "true";
else
echo"false";
}
check($a, $b);
Re: zakumanie zastosowania operatorow bitowych
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
$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
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.