![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Ludzie, ja wiem, że jest poźno, ale zacznijcie czytać tego manuala. Ciągniecie wątek pisząc coś, co nie jest prawdą.
Od kiedy w php znak "^" to potega? Według mnie i manuala: Cytat Operatory bitowe służą do operowania na wartościach konkretnych bitów w liczbie. Jeśli zarówno lewo jak i prawostronne operandy są typu string, operatory bitowe będą wykonywać operacje na poszczególnych znakach tych łańcuchów.
$a ^ $b Sumowanie bitowe modulo 2 Dany bit wynikowy jest równy 1 wtedy i tylko wtedy, kiedy jeden z bitów składowych jest równy 1 a drugi jest równy 0. A jeśłi mnie moja przemęczona głowa nie myli to: [php:1:d06f1d6bf9]<?php $a = $a ^ $b // jest równoznaczne z $a ^= $b ?>[/php:1:d06f1d6bf9] Przypominam także o: [php:1:d06f1d6bf9]<?php echo sprintf("Dwójkowo: %b", 123); ?>[/php:1:d06f1d6bf9] |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 0 Dołączył: 23.04.2003 Skąd: Mysłowice Ostrzeżenie: (0%) ![]() ![]() |
Żeby to wszystko zaczęło działać potrzebna jest mała pomoc z "zewnątrz".
W następnym poście będzie funkcja w C i jej wersja php, 5z474n zasłał mi ją maliom, nie wiem czy będzie działać, sprawdzę jak DOSTANĘ WRESZCIE PARAMETRY JEJ WYWOŁANIA A NIE TYLKO NAZWY ZMIENNYCH! 5z474n chodzi mi o to żebyś dał mi konkretne dane jakie funkcja otrzymuje, to sprawdzę wynik w C i w php i porównam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Co robi? Domyślcie się (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Chodzi o to że traktuje php'powego int jakby był 32 bitowym intem bez znaku. [php:1:b04efc8b5b]<?php //pierwszy parametr musi byc liczba int, nieujemna!!!!! //drugi parametr to przesunięcie, rowniez int ale moze byc ze znakiem //1 to o jeden bit w lewo //-1 to o jeden bit w prawo //UWAGA!!! NIE MA TESTU POPRAWNOSCI DANYCH!!! //JAK WYWOLANIE BEDZIE ZLE TO WYJDA BZDURY!!! function byte_shift($number, $how) { //konwersja na dwojkowy for($i=0;$i<32;$i++) { $tab[$i]=$number%2; $number=($number-$tab[$i])/2; } $number=0; while($how!=0) { //przesuwamy w lewo if($how>0) { $buffer=$tab[31]; for($i=30;$i>-1;$i--) { $tab[$i+1]=$tab[$i]; } $tab[0]=$buffer; $how--; } //a tu w prawo else { $buffer=$tab[0]; for($i=1;$i<32;$i++) { $tab[$i-1]=$tab[$i]; } $tab[31]=$buffer; $how++; } } //konwersja na dziesietny for($i=0;$i<32;$i++) { $number=$number+pow(2,$i)*$tab[$i]; } return $number; } //przykładowe wywołanie echo(byte_shift(2,2)); //efekt=8 ?>[/php:1:b04efc8b5b] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 03:23 |