![]() |
![]() |
![]()
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%) ![]() ![]() |
No dobra...
Ostrzegam, jestem początkującym programistą i to może być wielka pomyłka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Proszę się nie śmiać jak ktoś zna C++, jestem jeszcze młodym studentem informatyki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) [php:1:a7884bbe73]int gg_http_hash(const char *format, ...) //deklaracja funkcji, pierwszy parametr to wskaźnik do stringa, funkcja może mieć opcjonalne parametry { unsigned int a, c; va_list ap; int b = -1, i, j; va_start(ap, format); //"przechwytujemy" dodatkowe (opcjonalne) parametry funkcji if (!format) //jeśli parametr format jest stringiem pustym (a w zasadzie to wskaznikiem na NULL albo zerem (' ') funkcja zwraca zero i kończy działanie return 0; //jeśli są parametry robimy z nimi różne śmieszne rzeczy. //poniżej (kawałkami tylko napiszę //wykonujemy tyle razy jaką długość miał format, deklarujemy wskażnik do stringa i stringa (lub jak kto woli: tablicę znaków) for (j = 0; j < strlen(format); j++) { unsigned char *arg, buf[16]; //jeżeli aktualny znak(pod tym indeksem w stringu, bo string to nic innego jak tablica znaków) stringa format jest równy 'u' to: if (format[j] == 'u') { // do buf wstawiamy znaki zakończone znakiem końca stringa, liczbę znaków którą opisuje liczba sizeof(buf) (czyli 16*8 bitów), następnie jest formatowanie, po kolejnym przecinku jest źródło czyli pobieramy kolejny przekazany opcjonalny parametr (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) snprintf(buf, sizeof(buf), "%d", va_arg(ap, uin_t)); // w arg zapisujemy to cośmy przed chwilą dostali arg = buf; } else { //jeżeli aktualny argument nie jest znakiem 0 (czyli " ") to w arg zapisujemy nic (czyli " "), jeżeli nie był pusty to zostawiamy go if (!(arg = va_arg(ap, unsigned char*))) arg = ""; } i = 0; //zczytujemy sobie po kolei (po znaku) z arg znaki i robimy z nimi bitowe szaleństwa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) while ((c = (int) arg[i++]) != 0) { a = (c ^ (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) + (c << 8); b = (a >> 24) | (a << 8); } } //jeżeli po tym wszytkim b < od zera to zamieniamy je na dodatnie, jeżeli dodatnie to zwracamy je return (b < 0 ? -b : (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) ; }[/php:1:a7884bbe73] |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 02:57 |