Hocam öncelikle cevabın için çok teşekkürler.
Şimdi anlamadığım 2 kısım var 1.olarak 5.ve6. bitleri bulmak için neden 5kez sağa öteleme yaptık mantığı ne?
2.olarak uygun dediği sayı neden 3?
selam hocam tekrar :)
Cok zor bir is degil o da.. ama ondan önce bit islemlerine biraz daha degineyim.. Islemciler bildigin gibi temelde ikilik sistem üzerine kurulu ve onlar üzerinde calisir ve tüm islemler sadece 1 ve 0 lar üzerinden yürür. Ayrica ikilik sistemde matematiksel islemler de cok kolay..
Bir örnek vereyim. Mesela 128 x 16 kac yapar? Bilgisayar bunu cok kolay sekilde yapar ve bunu da bit kaydirarak yapar. Söyle
128 in bit eslenegi 10000000
16 nin bit eslenegi ise 10000 dir
16 yi saglayan 1 in sira numarasi 4 tür (sagdan ve sifirdan indexle saymaya baslarsan 4 cikar). (
burdaki tablodan da bakabilirsin)
O halde ben 128 sayisinin bitlerini 4 basamak sola kaydirirsam 16 ile carpmis olurum yani:
10000000
0000 (koyu renkli olanlari sola 4 kere kaydirdigim icin ekledim
)o halde benim sayimin 10 luk tabanda karsiligi ne oldu? 2048 (10000000
0000) olmus olur..
Bu islem, bilgisayarda 128x16 yi 10 luk tabanda carpmaktan cok daha kolay.. O yüzden tüm islemler bu sekilde yürüyor..
Simdi soruna gelelim.. Hocanin sordugu sey pek acik degil. Demek istedigi su, 5 ve 6. bitlerin degeri nedir yani 0 mi yoksa 1 mi bunlar.. Yani bizden 5 ve 6 bitleri bulmamizi istiyor.
sayiyi tekrar yaziyorum ve istenilen bitleri koyu renkle isaretliyorum
0001 0101 0
111 1100 (sagdan sola dogru ve saymayi 1 den degil de 0 dan baslarsan 5 ve 6. bit in koyuyla isaret koydugum yerler oldugunu görürsün )
Simdi benim amacim tüm sayiyi yok etmek ama o 5 ve 6 bitleri tutmak ve onlarin degerlerini göstermek.
5. biti bulabilmek icin ben tüm bitleri saga kaydirmam lazim böylece 0 dan 4 e kadar olan tüm bitleri koy etmis oluruz. O halde sayimiz söyle olacak
0000 0000 1010 10
11gördügün gibi 5 ve 6. bitler en sona yerlesti. Simdi ben kalan tüm bitleri bir sekilde yok etmem lazim, yok etmek deyince akla da carpma islemi gelir yani "ve" islemine tabi tutarsam bitleri yok edebilirim. Peki neyle ve islemine tabi tutacagim? tabi ki 5 ve 6. bitlerin degeri ile o da ne 11 (2 lik tabanda), 10luk tabanda ise degeri 3. Yani ben bu sayiyi 11 ile "ve" islemine tabi tutarsam, 11 haric tüm bitler silinecek..
Bunu yapmak icin de önce bit sayilarini esitlemem lazim. 3 sayisinin sadece iki biti var yani 11. Ama diger sayinin 16 biti var. O halde ben 11 in öne sifirlar ekleyip 16 bit haline getiriyorum ( soldaki sifirlarin bir önemi yok, sadece kalabalik yapsin diye eklendi (toplam bit sayilari esitleyelim diye))
0000 0000 0000 0011
Simdi bu ikisini ve islemine tabi tutarsam Yani 1. sayisinin 0. biti ile 2. sayinin 0 inci bitini carpiyorum, sonra birinci sayinin 1. bitiyle, 2. sayinin 1. bitini, sonra yine birinci sayinin 2. bitiyle, ikinci sayinin 2. bitini... bu sekilde carpiyorum. Dikkat edersen 2. sayim olan 3 (yani 11) in tüm bit degerleri 0 sadece en sagdan 2 tanesi 1. O halde bunlari dikey carpinca sagdaki 2 bit haric hepsinin carpimlarinin sonucu sifir cikacak ama en sagdaki bitler kalacak.
o halde, sayim ile 3 sayisinin bit ve islemi sonucu yine 3 cikiyor..
0000 0000 0000 00
11bu da demek oluyor ki, 5 ve 6. bitlerimiz 11 mis.
simdi anlayabildin mi hocam?