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
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
6 gru 12:04
jc: Zły dzień na dzielenie
6 gru 12:06
yht:
na dzielenie prezentami dobry dzień
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