Sabtu, 03 Desember 2011

Berhubungan dengan UAS di sekolah dan temen2 Als yang bingung sama Pascal, serta karena ditugaskan untuk membuat laporan tentang SHR SHL dan bilangan biner, maka Als ingin berbagi ilmu yang Als tahu kali ini
SHR (Shift Bit Right) adalah pergeseran Bit ke kanan, syntax (Angka SHR angka) contoh (30 SHR 1)
SHL (Shift Bit Left) adalah pergeseran Bit ke kiri, syntax (Angka SHL angka) contoh (10 SHL 3)
ok, langsung ke penjelasan utama
SHL dan SHR sangat erat hubungannya dengan bilangan biner, jadi kalau kita ingin mengerti apa itu SHR dan SHL maka kita harus mengerti dulu apa itu bilangan biner

Bilangan Biner
adalah jenis bilangan yang hanya mengenal angka 0 dan 1, sedangkan kita sendiri tahu bahwa angka ada 0-9
cara penghitungan bilangan biner sama dengan angka kita biasanya, hanya saja bedanya bilangan biner memiliki nilai maks 1 dan nilai minimal 0, sedangkan angka biasanya memiliki nilai maks 9 dan nilai minimal 0


lebih jelasnya coba lihat contoh berikut:

 0=    0
 1=    1
 2=   10
 3=   11
 4=  100
 5=  101
 6=  110
 7=  111
 8= 1000
 9= 1001
10= 1010
11= 1011
12= 1100
13= 1101
14= 1110
15= 1111
16=10000
 
Pergeseran Bit
sekarang kembali ke SHL SHR, kita mengerti bahwa SHR menggeser bit ke kanan
kita ambil contoh bilangan biner dari 8 yakni seribu
syntax(8 SHR 2) 

bilangan biner 1000 digeser kenan dua kali sehingga 2 angka nol dibelakang menghilang menjadi 10
dan 10 adalah bilangan biner dari 2, jadi jawabannya 2
syntax(6 SHL 1)
bilangan biner 6 yakni 110, digeser kekiri satu kali sehingga masuk 1 digit angka nol dibelakang menjadi 1100 dan angka tsb adalah bilangan biner dari 12, jadi jawabannya 12

coba kita lihat contoh berikut

 2=   10    SHR 1 ->     01=1
 3=   11    SHR 1 ->     01=1
 4=  100    SHR 1 ->    010=2
 5=  101    SHR 1 ->    010=2
 6=  110    SHR 1 ->    011=3
 7=  111    SHR 1 ->    011=3
 8= 1000    SHR 1 ->   0100=4
 9= 1001    SHR 1 ->   0100=4
10= 1010    SHR 1 ->   0101=5
11= 1011    SHR 1 ->   0101=5
12= 1100    SHR 1 ->   0110=6
13= 1101    SHR 1 ->   0110=6
14= 1110    SHR 1 ->   0111=7
15= 1111    SHR 1 ->   0111=7
16=10000    SHR 1 ->   1000=8
 
ada bocorannya nih... 
jika kita lihat lagi-lagi contoh barusan diatas, tiap angka yang di SHR 1 kali hasilnya sama dengan membaginya dengan 2
berarti jika di SHL kan 1 kali hasilnya sama dengan mengkalikannya dengan angka 2

inti bocorannya
SHR sama dengan membagi 2 sejumlah angka yang diberikan
contoh: (3 SHR 2)
bisa diartikan 3 dibagi 2 kemudian dibagi 2 lagi
contoh lagi: (8 SHR 1)
bisa diartikan 8 dibagi 2 satu kali

sama halnya dengan SHL, yakni mengkalikan 2 sejumlah angka yang diberikan
contoh: (4 SHL 3)
bisa diartikan 4x2x2x2
contoh lagi: (7 SHL 8)
bisa diartikan 7x2x2x2x2x2x2x2x2

semoga ilmu ini membantu dan bermanfaat :)

English:
There's not much documentation about what the SHL and SHR operators are used for. Could someone tell me when I would need to use these operators and how often are they used in Pascal programming?
:
: Thanks
:

Yep. They shift bits left and right. If you do not know Binary this is going to make very little sense, but Let me try anyways. A computer sees everyhing as either 0 or 1 (I think we all know that)
Now with that in mind a computer can't see the number 13. What it sees is a Binary (0 or 1) representation of 13.

Now if everything has to be a 0 or 1, we can easily count to 1, but that's it. So what if we want to count to 2 or 3?
Well, we use two bits. look below at how the numbers increase.

 0=    0
 1=    1
 2=   10
 3=   11
 4=  100
 5=  101
 6=  110
 7=  111
 8= 1000
 9= 1001
10= 1010
11= 1011
12= 1100
13= 1101
14= 1110
15= 1111
16=10000


So we can see that the computer sees 13 as 1101. alright.
Now also, notice the numbers where another digit is added:
2,4,8,16,32,64,128,256,...
They double every time. Let's take some examples and shift bits to the right just one place:
 2=   10    SHR 1 ->     01=1
 3=   11    SHR 1 ->     01=1
 4=  100    SHR 1 ->    010=2
 5=  101    SHR 1 ->    010=2
 6=  110    SHR 1 ->    011=3
 7=  111    SHR 1 ->    011=3
 8= 1000    SHR 1 ->   0100=4
 9= 1001    SHR 1 ->   0100=4
10= 1010    SHR 1 ->   0101=5
11= 1011    SHR 1 ->   0101=5
12= 1100    SHR 1 ->   0110=6
13= 1101    SHR 1 ->   0110=6
14= 1110    SHR 1 ->   0111=7
15= 1111    SHR 1 ->   0111=7
16=10000    SHR 1 ->   1000=8

If you notice, every time you SHR once, it is the same as dividing by 2. the reverse is True. If you SHL, it is the same as multiplying by 2.

Now you say, "So What? Why not just divide (or multiply)!"
Well, Computers find Dividing (and Multiplying) a VERY SLOW process, whereas shifting bits is a breeze!
So if you have a time critical application (perhaps a game) it is MUCH faster to Shift bits than multiply or divide if possible. Think of 3D graphics. There is TONS of math that goes into calculating exactly where each pixel should be. If you used a Divide for every pixel your game would run very slow and choppy. The problem is that not all numbers are a multiple of 2, but you can get tricky by combining 2 SHL/SHRs together (which is still faster)

Anyways, I hope this explains the SHL and SHR functions better. As you program more, you will learn how great they really are ;)

Source: programmersheaven

{ 7 Komens ... read them below or Comment }

  1. ternyata bisa dipermudah dengan dikali/dibagi dengan 2, tetapi ternyata soalnya tidak berubah :12

    setidaknya menambah ilmu dalam pemrograman :29

    BalasHapus
  2. Thanks banget atas postingannya..
    ini bermanfaat sekali buat aku :)

    BalasHapus
  3. mantap gan..
    thanks atas sharing ilmunya

    BalasHapus

Tuliskan komentar anda:

Popular Post

Blog Archive

- Copyright © ~::Ala Als::~ - Game Tutorial Indonesia - Powered by Blogger - Als Project Download Manga FREE !! -