matematykaszkolna.pl
C++ Alky: Wie ktoś co oznacza taki zapis : cout<<(128>>4) (przykładowo) Natknąłem się na to, ale nie wiem co w zasadnie to robi/jak działa.
6 gru 10:01
Pytający: << oraz >> to operatory przesunięcia bitowego, dlatego (128>>4) to nic innego jak przesunięcie 128 o 4 bity w prawo, czyli podzielenie przez 16. A dla strumienia (tu cout) operator << jest przeciążony i służy czemu innemu. Tu masz trochę przykładów: https://msdn.microsoft.com/en-gb/library/336xbhcz.aspx
6 gru 11:01
jc: To przesuniecie bitowe w prawo o 4 pozycje. Po lewej stronie dopisywany jest bit z lewego końca (nie wiem, czy to nie jest cecha procesora/kompilatora/systemu). Dla dodatnich liczb to zwykłe dzielenie przez 2k. 128 >> 4 = 32 13 >> 4 = 3 −1 >> 3 = −1 −4 >> 1 = −2
6 gru 11:09
Pytający: jc, wkradł Ci się błąd: 13 >> 4 = 0 13 >> 2 = 3
6 gru 11:17
jc: Jasne emotka
6 gru 11:22
g: Dla liczb zadeklarowanych jako int operacja >> to tzw. shift arytmetyczny, czyli działa tak, jak jc napisał − najstarszy bit pozostaje niezmieniony. Gdyby liczba była typu unsigned int, to wtedy zastosowany byłby tzw. shift logiczny i najstarszy bit byłby zerowany.
6 gru 11:51
Pytający: jc, swoją drogą w pierwszej linijce też masz błąd, ale wcześniej jakoś mi umknął: 128 >> 4 = 8 128 >> 2 = 32
6 gru 12:04
Alky: Rozumiem, dzięki za odpowiedzi emotka
6 gru 12:04
jc: Zły dzień na dzielenie emotka
6 gru 12:06
yht: na dzielenie prezentami dobry dzień emotka
6 gru 12:08
Dziadek Mróz: |1101| 13 >> 1 = 6 |0110|1 13 >> 2 = 3 |0011|01 13 >> 3 = 1 |0001|101 13 >> 4 = 0 |0000|1101 13 << 1 = 26 1|1010| 13 << 2 = 52 11|0100| ...
6 gru 15:01