|
|
Autor |
Wiadomość |
Razi
Książe postów
Dołączył: 17 Sie 2006
Posty: 936
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 16:04, 27 Lut 2008 Temat postu: Programowanie - wszystko o działaniu na bitach |
|
|
Bit - najmniejsza porcja informacji w informatyce. Może przyjąć wartość 0, albo 1 (jest ładunek, albo nie ma).
Bajt - porcja 8 bitów. Jeden znak w ANSII zajmuje 8 bitów, dlatego tak to się przyswoiło.
Tutaj przedstawię podstawowe działania na bitach, innych nie trzeba umieć
Wygląd:
Kod: | DEC > BIN
0 0000 0000
1 0000 0001
2 0000 0010
3 0000 0011
4 0000 0100
5 0000 0101
6 0000 0110
7 0000 0111
8 0000 1000
255 1111 1111 |
Jak łatwo zauważyć, oddzielam po 4 bity. jest to związane z czytelnością i przerabianiem na tryb szesnastkowy
Komputer wszystko robi na bitach, nawet odtwarza dźwięk i rysuje grafikę. Dla programisty przydatna jest znajomość tego.
Dec >> Bin
Są 2 sposoby:
1. Dzielenie przez 2 i sprawdzanie reszty. chyba najszybszy.
np. liczba 5:
konkretnie: dzielisz na 2. Jeżeli jest reszta 1, zapisz, jak nie ma to napisz 0. I dziel aż uzyskasz 1. Potem to co ci wyjdzie, to końcówka kodu binarnego(to co na górze, jest po prawej stronie). 1/2=reszta jest 1
Czyli 5=0000 0101
2. Brutalniejszy... Zapisać se całą tablicę bajta
Dla 1 bajta to: |128|64|32|16| |8|4|2|1|
Następnie jak jest liczba 5. Szukasz największego bita, którego wartość liczbowa nie przekracza liczby którą chcesz przekonwertować. Jeżeli to co zaznaczysz w bitach jest mniejsze, sprawdzasz dalej.
Bin>>Dec
U potrzebna jesttablica bitów i trzeba ręcznie zsumować wartości, gdzie są jedynki.
Dodawanie "+"
Proste liczby 5 i 3. Ich suma to 8.
5+3=8
0101+0011=1000
dlaczego? Łatwo sprawdzić w słupku
Liczy się identycznie jak normalne dziesiątkowe, tyle że jeżeli ma wyjść 2, to tak jakby było 10 i dodajemy 1 do następnego bita (po lewej)
Odejmowanie "-"
na tym samym przykładzie
Jeżeli ma jest na górze 0, na dole 1, zapożyczamy 1 z następnego po lewej bita.
Mnożenie "*"
Dzielenie "/"
Bit w lewo, prawo "<<", ">>"
Przesuwa bity w lewo, lub prawo. Przesunięcie liczby 5 o 3 bity w lewo:
0000 0101<<3=0001 0100
w prawo:
0000 0101>>3=0000 0000 (bity są pomijane)
OR(lub) "OR", "|"
Tu raczej nie ma zastosowania do liczenia, ale przydatne.
liczby 5 i 3
Dlaczego? porównuje się bity z obu liczb. Jeżyli którykolwiek ma wartość 1, to w wyniku na tym miejscu też będzie 1 Jeżeli ORuje się więcej liczb, wystarczy spisać je w kolumnie wszystkie,i jeżeli gdziekolwiek jest 1, to w wyniku tam będzie 1
XOR(to, albo to) "XOR", "^"
j.w
Dlaczego? w wyniku bit przyjmie wartość 1, wtedy i tylko wtedy gdy tamtych liczbach w jednym jest 1.
Jeżeli jest więcej XORowanych liczb, to tak jak XOR, tyle że musi być tylko w jednej liczbie bit o wartości 1, nie więcej, nie mniej, żeby w wyniku było 1.
AND(i) "AND", "&"
5 i 3 =
Aby wartość przyjęła 1, oba bity muszą mieć wartość 1.
Negacja "NOT", "!"
Nieprzydatne do liczenia, ale często pomocne.
Tu potrzebna jest tylko jedna liczba, niech to będzie 5.
Kod: | 0000 0101=
1111 1010
A liczba 3=
0000 0011=
1111 1100
|
Po prostu zamienia 1 na 0 i na odwrót. Warto tu wspomnieć, że w przekształcaliu udział bierą wszystkie bity w zmiennej!! np. dla integer będzie to 16, 24, lub 32 bity, dla bajta to 8 bitów itd.
Negacja, XOR, OR i AND to operatory logiczne są stosowane przy robieniu różnych warunków (IF, WHILE, DO itd....) Warunek jest spełniony, gdy wartość logiczna wynosi 1. Jako liczby, którymi są np. równania(a==2+b). Jeżeli w jednym warunku stosuje się więcej niż jednego rodzaju operatorów, lepiej użyć nawiasów, wtedy najpierw sprawdza nawiasy i wg tych nawiasów sprawdza, a nie wszystkie liczby po kolei.
To co puste, uzupełnię niedługo
Post został pochwalony 0 razy
Ostatnio zmieniony przez Razi dnia Śro 16:59, 27 Lut 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
|
|
musialmati
Administrator
Dołączył: 04 Lut 2006
Posty: 6753
Przeczytał: 0 tematów
Pomógł: 16 razy Ostrzeżeń: 0/5 Skąd: Wrocek
|
Wysłany: Śro 17:34, 27 Lut 2008 Temat postu: |
|
|
...i wszystko jasne
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
Razi
Książe postów
Dołączył: 17 Sie 2006
Posty: 936
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 18:55, 27 Lut 2008 Temat postu: |
|
|
Potraktuj to jako dość brutalne wprowadzenie:D Oczywiście nie trzeba tego umieć, ale to jest pomocne. Trzeba to wiedzieć tylko o co chodzi w negacji, or, xor i and, bo na nich opierają się warunki. A bezpośrednio dodawanie i odejmowanie na bitach to taka ciekawostka... Jeszcze napiszą wstęp do C++ jak bede miał czas. Do php już napisałem, ale strasznie to obkroiłem...
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
|