Operatory bitowe

Dyskusje na temat Javy.
solark
Bywalec
Bywalec
Posty: 45
Dołączył(a): środa, 3 listopada 2010, 19:43

Operatory bitowe

Post przez solark »

Witam forumowiczów
Ja mam takie pytanie odnośnie tego kursu pierwszego i lekcji dotyczącej operatorów bitowych
Chodzi mi o to że pod koniec lekcji zostało podane że za pomocą operacji przesunięcia można zastąpić dzielenie i mnożenie przy pomocy zwykłych operatorów / bądz *
No i może czegoś nie zrozumiałem ale przesunięcie w lewo czy w prawo nie powoduje że liczby zostają wymnożone czy podzielone
Proszę o wyjaśnienie
dziękuję i pozdrawiam
PS Bardzo fajnie że powstały wogóle takie kursy Wszystko jest podane na tależu i nie trzeba wertować często grubych książek
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Operatory bitowe

Post przez Morfidon »

Witam,

Dziękuje za zapytanie.

Jeśli mamy liczbę np. 10 zapisaną w systemie dwójkowym czyli:

0 0 0 1 0 1 0

i przesuniemy ją o 1 bit w lewo to otrzymujemy

0 0 1 0 1 0 0 co jest równe 20

czyli przesuwając w lewo otrzymujemy liczbę dwukrotnie większą

przesuwając liczbę 10 o 2 bity w lewo otrzymujemy

0 1 0 1 0 0 0 co jest równe 40

czyli otrzymaliśmy liczbę 4-krotnie większą

gdybyśmy znów przesuwali w lewo to otrzymalibyśmy liczbę 80, 160, 320...

reasumując przesuwając bity w lewo otrzymujemy liczby przemnożone przez kolejne potęgi dwójki.

W prawo sytuacja wygląda analogicznie, tylko że tym razem otrzymujemy podzielone przez kolejne potęgi dwójki.
PS Bardzo fajnie że powstały wogóle takie kursy Wszystko jest podane na tależu i nie trzeba wertować często grubych książek
Cieszę się, że kursy się podobają :)

Pozdrawiam serdecznie,

Arkadiusz Włodarczyk
Post Reply