Strona 1 z 1

Operatory bitowe

Napisane: środa, 3 listopada 2010, 19:50
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

Re: Operatory bitowe

Napisane: środa, 3 listopada 2010, 23:23
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