Merhaba, hoş geldiniz. Bitsel operatörler hakkında konuşalım.
Bir önceki derste atama operatörlerinden bahsederken bunun küçük bir örneğini göstermiştik çünkü atama
operatörleri, toplama gibi bir işlem gerçekleştirebileceğiniz ve ardından
atama yapabileceğiniz tüm bu bileşik atamalara sahiptir.
Aynı şeyleri bu tip operatörlerle de yapabilirsiniz.
Ancak bunları daha ayrıntılı olarak inceleyelim ve size tam olarak ne olduklarını söyleyelim.
Yani c, bitsel mantıksal operatörler ve
kaydırma operatörleri sunar. Bu terimler hakkında tamamen bilgisiz olabilirsiniz.
Mantıksal operatörler gibi görünürler, ancak oldukça farklıdırlar. Herhangi bir Boolean değerlendirmesi
yapmazlar. Doğru ya da yanlışı değerlendirmezler.
Ampersand ampersand, 2 ors gibi görünürler, ancak herhangi
bir Boolean değerlendirmesi yapmazlar.
Yaptıkları şey, bitler üzerinde, tamsayı değerleri içinde işlem yapmaktır.
Bu yüzden kendinize bunu neden yapmak isteyesiniz ki diye sorabilirsiniz. Çoğu programda
kullanılmıyor. Bu daha çok gelişmiş bir teknik.
Bu bir başlangıç sınıfı olsa bile. Bunlar operatörlerin bir parçasıdır ve operatörler yeni başlayan bir kavramdır.
Bu yüzden onlara değineceğim ama illa ki onlara odaklanmayacağız.
Size bazı örnekler vereceğim ve bunları nasıl kullanabileceğinizi göstereceğim.
Ancak bu dersten sonra bu konuda uzman olmayacaksınız.
Ancak yararlı olmalarının ve aslında onları kullanmak istemenizin nedeni, oldukça
fazla veri depolayabilmenizdir.
Bu yüzden ve, ve işareti ve veya sadece tek bir paralel çubuk olan bitsel veya olarak
adlandırılan bitsel operandlar vardır.
Bunları tekrar mantıksal operatörlerle karıştırmamaya çalışın.
Mantıksal operatörlerin 2 tanesi vardır, ampersand ve ampersand, yani bir ve.
Bitsel operatörlerde sadece tek bir tane vardır. Yani sadece bir ve işareti veya sadece bir veya.
Yapacakları şey test etmek ve bir tamsayı değişkeninin içindeki bitleri
tek tek ayarlamaktır. Biraz nedir?
Birazın veriyi ölçmenin bir yolu olduğunu biliyoruz.
Ancak bir bit aslında sadece bir 0 veya 1 değeridir.
Ve bunların 8 tanesi bir baytı oluşturur. Yani bir bit 0 ya da 1'dir.
Ve yapabileceğiniz şey bir tamsayıdır, unutmayın,
çalıştırdığınız sisteme bağlı olarak 8 bayt olabilir.
Ve böylece her bir biti açıp kapatabilirsiniz.
Açmak ya da kapatmak derken, bunların 1 ya da 0'a eşit olmasını sağlayabileceğinizi söylüyorum.
Ve sonra bu parçaları size bir şeyler anlatmak için kullanabilirsiniz.
Böylece bitlerin bir tür veriyi temsil etmesini sağlayarak çok sayıda veri depolayabilirsiniz.
Bu nedenle bilgisayarın işlem yapmak için 1 ve 0'lardan oluşan bitleri ve
ikili sayıları kullanmasının nedenlerinden biri çok fazla veri depolayabilmenizdir.
Şimdi
bunun tam olarak ne anlama geldiğini bir örnekle açıklayalım. Tek bir tamsayı değişkeni kullanabilirsiniz.
Yine, bir tamsayı bir sayıdır, bir tamsayı çalıştırdığınız sisteme
bağlı olarak 4 ila 8 baytı temsil eder.
Bu da 4 bayt varsa 32 bit olduğu anlamına gelir.
32 adet 0 veya 1 değeri vardır.
Böylece tüm bu bitleri bir şeyi temsil etmek için kullanabilirsiniz.
Örneğin, bir kişinin karakterlerini tek tek saklamak istiyorsanız, sadece 1 bitiniz
olabilir, 1 erkeğe eşittir 0 kadına eşittir diyerek
kişinin erkek mi yoksa kadın mı olduğunu söyleyebilirsiniz.
Sadece ya açarsınız ya da kapatırsınız.
Ardından, kişinin Fransızca, Almanca veya İtalyanca konuşup
konuşamadığını belirtmek için 3 bit kullanabilirsiniz.
Yani 1 biti Fransızca'yı temsil edebilir. Eğer 10 değilse, o zaman Fransızca
bilmiyorlar demektir.
Almanca 0 ise bu Almanca konuşmadıkları anlamına gelir.
Eğer 1 ise, bu Almanca konuştukları anlamına gelir. Yani bu bitleri kapatıp açarak, 1'den 0'a ayarlayarak
çok sayıda veriyi temsil edebilirsiniz.
Kişinin maaşının 50.000 veya daha fazla olup olmadığını kaydetmek için başka bir parça kullanabilirsiniz.
1 ise doğrudur, evet doğrudur. 0 yanlış.
Yani temel olarak burada belirttik.
Aslında 4 diyor, ama biz aslında 5 bit veri belirledik, 32
ya da 64 bitimiz olsa da olmasa da sadece 5'ini kullandık
ve bir kişinin kadın ya da erkek olup olmadığını, Fransızca,
Almanca ya da İtalyanca konuşup konuşmadığını ya da her üçünü ya da birini
ya da diğerini temsil edebildik.
Ve 50.000 dolardan fazla kazanıp kazanmadıkları.
Tüm bu verileri bitlerimizde temsil edebiliriz.
İşte bu noktada bitsel operatörler kullanışlı hale gelir.
Artık bitleri birçok farklı veriyi depolamak için nasıl kullanabileceğimizi
biliyoruz. Şu ikili sayılar hakkında konuşalım.
İkili sayının sadece 1'ler ve 0'lar içeren bir sayı olduğunu biliyoruz.
İşte bu yüzden kullanmak avantajlıdır. Bir tamsayıdaki bit operatörleri, sayı herhangi
bir uzunlukta olabilir.
Aşağıdakiler ikili sayı örnekleridir, sadece 0'lar ve 1'ler.
Yani bunu gördünüz 0 1 0 1 0 1 0 1 0 1 0.
Ve bir baytın 8 bit olduğunu unutmayın.
Bir tamsayı çoğu platformda genellikle 4 bayttır.
Mimariye bağlıdır, ancak çoğunlukla 32 bittir.
Böylece açık veya kapalı olduğunu belirtmek için 1'ler ve 0'lar ile saklayabileceğiniz 32 değeriniz olur.
İkili sayılar, yine her ikili sayının karşılık gelen bir ondalık değeri vardır, bu
nedenle ikiliyi ondalık sayıya nasıl dönüştüreceğinizi anlamanız gerekir.
Buradaki örnekler 1 1'e eşittir, 1 0 2'dir, 1 1 3'tür, bunlar
basit dönüşümlerdir.
Yine, genellikle daha fazla bitleri vardır, 1 0 1 0 1 1 1.
İkili sayıları ondalık sayıya dönüştürmenin yolu,
bayttaki her bir konuma karşılık gelen
bit ile bakmak ve ardından 2'nin kuvvetini kullanmaktır.
Böylece her basamak için 2'nin kuvvetini kullanarak basamağı
konum değeriyle çarparsınız. Ve sonra nihai sonucu elde etmek için tüm projeyi toplarsınız.
Yani konum değerleri ve ikili sayı 2'nin kuvvetleridir.
Dolayısıyla ilk konum 2 0 değeri olacaktır, diğer
bir deyişle 1 olacaktır.
İkinci konum ise 2'nin birinci kuvveti olan 2'nin değeri
olacaktır. 2'nin 2'si 4, 2'nin 3'ü 8, 2'nin
4'ü 16 olacaktır. Ve bunu tekrar tekrar yapmaya
devam ediyorsunuz. Bu yüzden güzel bir örnek görürseniz anlamanız daha kolay olur.
Ve burada 0 1 1 0 1 0 0 1 ikili sayısına sahibiz.
Bunun ondalık karşılığı 105'tir.
Dönüştürmenin yolu, her bit için sağ taraftan başlamak ve bitin
0 1 olup olmadığına bağlı olarak 2'nin kuvvetiyle çarpmaktır.
Eğer sağdan başlarsak, 1'e ulaşırız.
Yani 1 kere 1 diyoruz ve o 1'i saklıyoruz. Sonra bir sonraki 1, ikinci
pozisyon 0 çarpı 2 0'dır. Sonra 0 kere 4, 1 kere
8, 0 kere 16, 1 kere 32, 1 kere
64 ve 0 kere 28.
Ve tüm bunları topladığınızda 105 sonucunu elde edersiniz.
Bu dönüşüm için bir yol. Aslında 2 ile çarpıp bir sonraki bitin
ne olduğuna bağlı olarak 1 ekleyerek veya 0 ekleyerek soldan
sağa da dönüştürebilirsiniz. Örneğin, soldan sağa
doğru giderseniz, 1 ile başlarsınız
çünkü 0 önemli değildir.
Yani soldan sağa doğru giden ikinci bitte 1 var.
Üçüncüsü, 1 kere 2 artı 1,
yani 3 eder.
Ve yine, 2 ile çarparsınız, böylece 3 çarpı 2 artı 0 dersiniz ki bu da 6 eder.
6 kere 2 artı 1, yani 13.
13 kere 2, 26 eder.
26 kere 2, 52 kere 2 eder
ki bu da 104 artı 1 eder.
Yani yine 2 ile çarpın ve sonra 1 ekleyin. Bir başka örnek, yine sağdan
sola genellikle biraz daha kolaydır.
İşte 1 0 0 1 1 0 0.
Ve bu 156'ya dönüşür çünkü tekrar 0 çarpı 1,
0 çarpı 2, 1 çarpı 4, 1 çarpı 8, 1 çarpı 16 vb.
dersiniz ve sonra hepsini
toplarsınız, bu da 4 8 12 16 28 artı 128 156'dır.
Ve yine, soldan sağa giderseniz 2 ile çarpıp 1 eklersiniz.
Bu yüzden 1'den başladık. Diyelim
ki 1 2 4 9, 4 kere
2 artı 1, 9 kere 2
18 artı 1 19 kere 2, 38 artı
1 39 kere 2, 78 kere 2 yani
156 eder.
Bu, ikiliyi ondalık sayıya nasıl dönüştürebileceğinizi
gösteren hızlı bir gösterimdir. Desibeli ikilik sayıya dönüştürmekle
gerçekten ilgileniyorsanız, genellikle web'deki
bir dönüştürmeyi kullanıyorum. Ancak bu ikili sayıları alabilir ve daha sonra bitsel
operatörler gerçekleştirebilirsiniz.
Yani bitsel operatörler burada özetlenmiştir. Ve yine, internetten aldığım başka bir güzel tablo,
ancak mantıksal operatörlere benziyorlar. Ama yine de onları karıştırmayın.
Yani ve işareti tek başına bir ikili ve operatörüdür.
Ve bunun yaptığı şey, her iki işlenende de varsa bir
biti sonuca kopyalamaktır. Eğer ikisi de doğruysa, o zaman biraz
kopyalanacaktır.
Yani a ve b 12'ye eşitse, 0 0 0 1 1 0 0
şeklinde ikili bir gösterime sahip olursunuz.
Yani a ve b bu sayı
olacaktır. Bazı örnekler üzerinden gideceğiz.
Bir ikili veya, her iki operandda da varsa bir biti kopyalar, bu nedenle
a veya b, her iki operandda da varsa
bir biti kopyalayacaktır. Dolayısıyla, işlenenlerden
biri 1'e eşitse, bir bit kopyalanır.
Ve sonra ikili xor, bu özel veya'dır.
Bu, bit 1 işlenende ayarlanmışsa kopyalanır ancak her ikisinde de ayarlanmaz.
Yani bir doğru, ancak yalnızca 1 doğru varsa
ve bunu klavyenizde temsil etmek için havuç kullanırsanız,
o zaman bir bit kopyalayacak ve bunun doğru olduğunu
söyleyecektir, ikili 1'ler tümleyeni.
Yani yine burada ikili veri alıyoruz çünkü bitlerden bahsediyoruz. Yani umarım, 1'in tümleyeni.
Operatör tektir ve bitleri çevirme etkisine
sahiptir, temelde sadece olumsuzlar ve monitörü çıkarır.
Burada bir örnek vermek gerekirse, tilde a dediğinizde 1'e
tümleyen operatörünü uyguluyorsunuz demektir.
Ve eğer negatif 61'e eşitse, 1 1 0 0 0 1 olacaktır.
Dolayısıyla, bu ikili sayıyı negatif
sayı olan ondalık sayıya çevirirseniz ve ilk
sayı işarettir. Yani 1 size bunun bir işaret olduğunu söylüyor.
Ve sonra 1 2 4 8 16 33 ve sonra 61 dersiniz,
yani bu şekilde temsil edilir.
Bu yüzden daha somut örnekler üzerinden gideceğim.
Ancak temel olarak, ikili bir sayınız varsa, a başlangıçta 60 olan
0 0 1 1 1 0 0 ikili bir sayıdır ve temel olarak
çevirmeyi sağlarsanız, daha sonra
1 1 0 0 0 0 0 0 1 1 olan negatif 61'e dönüşecektir.
Yani bu, gerçekte ayarlanmış olan değişkenlerin sonuçlarıdır. Yani yine, a'nın belirli bir ikili
gösterime ve b'nin belirli bir ikili gösterime sahip olduğunu varsayıyorum.
Yani a yine 60'a eşitse ve b de 13'e eşitse, o zaman
bunları bir bitsel toplama işlemi yaparak bir araya getirmenin
sonucu 0000 11 00, yani 12 olacaktır.
Yine bu örnekler üzerinden gideceğim ancak bu, bu farklı ikili operatörler
hakkında küçük bir açıklama sağlamaya çalışıyor.
Küçükten küçük sembolü bitleri sola kaydıracaktır.
Böylece sol operand değeri, beyaz operand tarafından belirtilen bit sayısı kadar sola taşınır.
Yani a 2'den küçük gibi bir
şey yaparsanız
ve a aslında bir ikili sayıya
eşitse, örneğin 0 0 1 1 1 0 0, baytları 2 kaydıracaksınız.
Yani 0'ları çıkaracaksınız ve 1 1 1 1 olacak ve bu 0'lar sona gidecek.
Ve aynı şey sağa kaydırma operatörü için de geçerlidir. Sadece onları sol yerine sağa kaydırıyorsunuz.
Burada büyüktür sembollerini kullanırsınız.
Birazdan bunların üzerinden geçeceğim.
Bitsel operatörlerle ilgili anlaşılması gereken bir diğer önemli nokta da bu
a ve b değerlerinin nasıl değerlendirileceğidir. Peki 1 ve 1'in 1'e göre
değerlendirmesi nedir, eğer bu bir ve
işareti ise. Eğer bir veya 1 ise ve 1 de 1 olarak
değerlendirilir.
Ancak bir ve işareti kullanıyorsanız 1 ve 1 ve 0, 0 yanlış
olarak değerlendirilir. Bu yüzden, bunu yaparken bir ve bir veya
özel bir veya kullandığınızda değerleri gösteren
küçük bir doğruluk tablosu sunmak istedim.
Yani burada p0 ve q0 varsa, yani ikisi de yanlışsa ve bir ve uygularsanız,
yanlış olacaktır çünkü bunun doğru olması
için ikisinin de doğru olması gerekir.
Ve 3. satırda gördüğünüz şey budur.
İkisi de doğruysa, p ve q 1, yani doğru olarak değerlendirilecektir.
Eğer ikisi de doğru değilse, her zaman yanlıştır.
P veya q'dan yalnızca birinin doğru olması gerekir.
Bu yüzden 1. ve 2. satırları 1'e ve 3. satırı 1'e eşit görürsünüz.
Yanlış olduğu tek zaman, ikisinin de yanlış olduğu zamandır.
Ve sonra özel veya en az 1 tanesi doğrudur
ve sadece 1 tanesi.
Yani p yanlış ve q doğruysa, true değerini döndürür.
Ve eğer p doğru ve q yanlış ise, 1 döndürür.
Bu da size nasıl değerlendirildiği hakkında bir fikir verir.
Yine çok fazla matematiksel şey var ama ikili rakamlardan bahsettiğimizde bundan bahsediyoruz.
Şimdi bazı somut örneklere ve kod bloklarına bakalım. Umarım bu biraz yardımcı olur.
İşte işlevimiz. Birkaç değişken daha oluşturacağım.
Varsayılan olarak böyle olsa da imzasız olduklarından
emin olacağım. Yani unsigned int a dersem ve bunu
60'a atarsam, bu aslında ikili olarak 0 0 1 1 ve ardından 11 00
olarak gösterilecektir.
Başka bir işaretsiz değişken yaratırsam ve int b
dersem ve buna 13 değerini atarsam,
bu aslında ikili 0 0 00 1 1 0 1 olarak gösterilecektir.
Dönüşümleri orada yapabilirsiniz.
Ancak burada göstermek istediğim şey, bu ikili sayıları ayarladığınızda,
farklı bitsel işleçleri kullanarak bitleri kapatabileceğinizdir.
Şimdi bir int sonuç oluşturacağım ve bunun 0'a eşit olacağını
söyleyeceğim.
E, bitsel işlemin sonucunu tutacaktır.
operasyon. Şimdi c eşittir a dersem ve
bitsel işleneni ve a ve b'yi uygularsam, şimdi bunun
yapması gereken şey, a 1'e eşitse ve b 1'e eşitse, bu bitler
açılacaktır. Peki bu v'nin sonucunun ne olmasını bekliyorsunuz?
A'nın ilk bitine ve B'nin ilk bitine bakarsınız ve
ikisi de 0'dır.
Yani sonuç 0 olacaktır çünkü a ve
b'de true yaparsanız, 1 olması için her ikisinin de true olması gerekir.
Yani bir sonraki de 0 olacak. Bir sonraki 1 ve 0, üçüncü bit.
Yani hala 0, 1 ve 0 hala 0'dır. Ve şimdi 1 ve 1 var.
Sonunda bir gerçeğimiz var. Bir ve bir tane daha var. Bir gerçeğimiz var.
Ve sonra 0 ve 0 0 olacak ve sonra bir 0 ve 1
0 olacak.
Dolayısıyla, c değerini yazdırmaya çalıştığımda sonuç, değeri ondalık
biçimde yazdıracaktır. Böyle bir şey yaparsam, bu
ikili sayının ondalık eşdeğerini yazdıracaktır,
bu da 0 0 0 0'a eşdeğer olacaktır.
Ve bunların hepsi ikilik sayıları onluk sayılara dönüştürüyor, dolayısıyla bu örneği anlamak
için bunu nasıl yapacağınızı anlamanız gerekiyor. Ancak 0 0 0 0 1 1 0 0 aslında
1 3 7'dir, değer aslında 12'dir,
1 3 6 12.
Yani c çıktısı alsaydım
bu on iki çıkardı ya
da sonuç daha iyi olurdu.
Eğer bunu çalıştırırsam, değerin 12 olduğunu göreceksiniz.
Aslında ampersand karşılaştırmasına dayalı olarak tüm bitleri kapatıp açtı.
Şimdi çalıştır dediğimde,
değerin d12'de olduğunu görüyoruz çünkü bitleri
kapatıp açıyor ve aslında 0 0 0 1 1 0 0 olarak
temsil edilecek, bu da 12 değeridir çünkü
ondalık bir değer yazdırıyoruz.
Bunu değiştirirsem ve şimdi bir or yapmak istersem
ve hala or yapıyorsam ve or'un enter'ın hemen yanındaki paralel çubuk
olduğunu hatırlarsam, şimdi yalnızca 1 doğruysa bitleri
açacağım. Yani 00, bunların
ikisi de yanlış. Tekrar söylüyorum, burada karşılaştırma yapıyorum.
Bu bitleri 16 ve 13 için karşılaştırıyorum.
16 ikili 0 0 1 1 1 0 0 olarak temsil edilir.
13 ikili olarak temsil edilir 0 0 0 1 1 0 1'dir.
Bu sayıların her biri bir biti temsil eder.
Yani 60'ın ilk biti 0'dır, 13'ün ilk biti 0'dır.
Ve eğer bunları birlikte sıralarsam, 0 ve 0, yine 0 elde edeceğim. Bu da ilk bitin ilk sonucudur.
İkinci bit yine 00. Üçüncü bit 60 için 1 ve
13 için 0'dır.
Şimdi tüm bunlar 1 doğru olması gerektiği anlamına geliyor, bu yüzden bu 1 olacak.
Aynı şey 4 ve 16, 13 numaralı bitler için de geçerlidir. Şimdi yine 1'im var.
Ve sonra 1 ve 1, ikisi de doğru. Yani yine 1, tek ihtiyacım
olan 1 doğru, bir 1 daha.
İkisi de yanlış, yani bu doğru olmayacak. 0, hatırlamak doğru değildir,
1 doğrudur ve 0 11. Şimdi elimde 0 0 1 1 1 0 1 var.
Ve bunun ondalık olarak değerini yazdıracak olursam,
yine ikiliyi ondalık sayıya nasıl dönüştüreceğinizi
anlamanız gerekir, ancak temelde 1 3 7 15 30 61'dir.
Yani bu 61 çıktı verecek.
Bu programı sona erdirip yeniden inşa
edersek 61 değerini göreceğiz.
Yani bunlar bitsel operatörlerdir. Ve yine, bu daha gelişmiş bir
program türüdür, ancak ampersands ve benzerlerini
kullanarak, esasen bitleri açıp kapatarak çok sayıda veriyi temsil
etmenin güzel bir yoludur. Yani bununla oynayabilirsiniz.
Özel ya da havuç olan bir şey yapabilirsiniz.
Havuç, klavyedeki 6 rakamının üzerinde.
Farklı bir sonuç görürdünüz. Eğer tilde eklerseniz, bu temelde her şeyi kapatacaktır.
Yani a ve a 60'a eşitse, 0 0 1 1 1 0 0, 1 1 0
0 0 0 1 1'e eşit olmayacaktır.
İkili operatörlerle yapabileceğiniz bir başka harika şey de
kaydırma, sola ve sağa kaydırmadır. Sola veya sağa kaydırmanız gerektiğinde bilmeniz
gereken birkaç önemli şey vardır.
Her şeyden önce, işaretsiz bir int'in yalnızca pozitif olabileceği anlamına
geldiğini biliyoruz. Olumsuz olamaz.
Yani orada negatif bir değer saklıyorsanız, derleme dönüştürme işlemi daha uzun sürecek, çok fazla boyut kaplayacaktır.
İşaretsiz ints'in yalnızca pozitif değerlere sahip olabileceğiniz anlamına geldiğini unutmayın.
İşaretli tamsayılar, negatif veya pozitif olabilecekleri anlamına gelir.
Ancak kaydırmak istiyorsanız,
sola kaydırmak için hatırlayın, yani şimdi sonuç eşittir
diyorsak ve diyelim ki a'yı 2 kaydırmak istiyorsak, bilmeniz
gereken diğer önemli
şey, tam sayılara sahip olduğunuzda, tam sayılar,
çoğu platformda 4 bayttır.
Bu,
operatörün boyutunu yaparak boyutu alabilmenize bağlıdır. Yani tamsayı gerçekten
4 32 bittir, bu yüzden sayı gerçekten
böyle bir şeydir. 16 gibi bir
şey. 4 8 12 16 20 24 nedir?
Yani muhtemelen böyle bir şey ve bunun gibi bir şey.
Gerçekten sayı bu. Sadece son 8 biti gösterdim
çünkü geri kalanı 0'dı. Ancak buna 4 bayt olan 32
bitlik bir tamsayı olarak bakarsanız,
ikili olarak şöyle görünür: 4 0s 4 0s 4 0s 4 0s
4 0s ve ardından 0 0 1 1 1 0 0.
Bu yüzden sola veya sağa kaydırma yaparken boyutu bilmeniz
gerekir çünkü 2'den fazla kaydırırsanız net olmayacaktır.
Düşmüyor ya da öyle bir şey olmuyor.
Bu yüzden tekrar 48 12 16 20 24 28 32'den emin olmama izin verin
ve aynı şey 13 için de geçerli olacaktır.
Dolayısıyla, 2'den büyük bir değeri
sola kaydırırsanız, sonuçta bu 1'ler de
sola kayacaktır. Yani sonuç hala önceki
tüm 0'lar olacaktır, ancak
daha sonra 1 1 1 0 0 0 olacaktır.
Bu da 240'a eşit olacak.
Hızlı bir dönüştürme yaparsam, kafamda 1 3
7 15 30 60 122 40 diyerek yapıyorum,
ancak bunu oluşturup çalıştırarak doğrulayabiliriz ve sonucun 240 olduğunu göreceksiniz.
Ve sonucun 240 olduğunu görüyoruz.
Şimdi eğer 2'den fazla kaydırma yapmak istiyorsanız, diyelim ki 4'e kaydırmak
istiyorsunuz, işte o zaman bunun 32 bitlik bir sayı olduğunu anlamak önemli hale gelir.
Yani burada aslında bu 0'lardan bazılarını kullanmanız gerekir.
Yani 4'e kaydırmak isterseniz gerçekten böyle bir şeye
sahip olursunuz.
Ve sonra bunları 4'e göre gruplamak
isterseniz, böyle bir şey
elde edersiniz. Yani bunu kafamda
yaparsam sonuç yine 1 3 7 15
30 60 120 240 480 ve sonra 960
olacaktır.
Umarım doğru yapmışımdır. Yine bunu çalıştırdığımızda
ve 960 dediğimizde,
bu sola kayıyor. Sağa kaydırmak istiyorsanız,
büyüktür sembollerini kullanırsınız.
Yani sağ ikili sağa kaydırma operatörüne geçerek büyüktür
işlemini yaparsınız. İkili sola kaydırma operatörü, daha azını yaparsınız.
Yani burada sağa kaydıracaksanız, sağ 4'e hareket etmek istersiniz.
Peki burada son varsa, yani orijinal 60'ınız varsa, 4'e gitmeye
çalışırsanız ne olur? Öylece bırakılan rakamlar olacak.
Yani bu son 4 yerine aslında yine
60 tane var. Yani elimizde
0 0 0 1 1 1 0 0 var, 4'ün üzerine geçmeliyiz.
Yani sonunda 2 bit kaybedeceğiz çünkü düşecekler.
Ve sonuçta şöyle
bir şey elde edeceğiz
0 0. Ve böylece bu sadece 3'e eşit olacaktır,
bunun gibi bir şey, böylece aslında bit kaybedersiniz çünkü çok fazla sağa kayıyorsunuz,
3 sonucuna sahipsiniz. Bu yüzden sola ve sağa kaydırırken
dikkatli olmalısınız, sisteminize bağlı olarak bu 32 bit 4 baytı
tekrar kullandığınızdan emin olun.
Bu, bitsel operatörlerin hızlı bir özetidir.
Daha ileri seviyeye geldiğinizde, belirli bir bitin 1 veya 0 olup olmadığını
gerçekten nasıl kontrol edebileceğinizi anlamanız gerekir.
Oldukça basit. Sadece bir ve yaparsın.
Ancak biraz daha fazla kod yazmanız gerekiyor.
Bu dersin amacı bitsel operatörlere kapsamlı bir bakış sunmak değildir.
Size genel bir bakış sunmak, bu konuda iyi bir
başlangıç yapmanızı sağlamak istedim. Ancak bu operatörleri daha iyi anlayabilmek için biraz
daha fazla çalışmanız, bunları kullanmanız ve pratik yapmanız gerekecektir.
Umarım bu yardımcı olmuştur. Yine, biraz kafa karıştırıcı olabilir, bu yüzden
takip etmek ve onunla oynamak istersiniz. Ama yine de, öğrenmenin en iyi yolu nedir, biraz
kod yazmak, bazı örnekler öğrenmek. Teşekkür ederim.