- Back to Home »
- Ilmu komputer »
- Pendalaman SHL SHR dan bilangan Biner dalam Pascal
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 binerSHR (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
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
ternyata bisa dipermudah dengan dikali/dibagi dengan 2, tetapi ternyata soalnya tidak berubah :12
BalasHapussetidaknya menambah ilmu dalam pemrograman :29
Thanks banget atas postingannya..
BalasHapusini bermanfaat sekali buat aku :)
mantap gan..
BalasHapusthanks atas sharing ilmunya
Big thanks bro 😊
BalasHapusBig thanks bro 😊
BalasHapusMantep emang lu bro
BalasHapusMantep emang lu bro
BalasHapus