En iyi yanıtlayıcılar
Bitsel Operatörler

Soru
-
Merhaba
Byte a=10; 00001010;
Byte b=(byte)~a;
Console.WriteLine(b); //11110101;
Arkadaşlar bu kodu tane tane(işlem aşaması) açıklarmısınız nasıl 245 yazıyor
Byte a=32;
Byte b=(byte)~a;
Console.WriteLine(b);
Birde bu soru var yardımcı olursanız sevinirim
sp
Yanıtlar
-
10'luk sistemde 10 ikilik sistemde 0000 1010 a karşılık gelir ki zaten yazmışsın. ~ kullandığın zaman ikilik sistemdeki karşılığında 0 olan bitleri 1, 1 olanları da 0 yapılır. Örneğin
10 = 0000 1010
~10 = 1111 0101
1111 0101 = 245
Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere
- Yanıt Olarak İşaretleyen tedris 18 Şubat 2016 Perşembe 13:42
-
iyi de 32 nin ikilik sistemde karşılığı 1 değil ki 0010 0000 dır. Bununda tersi 1101 1111 dir yani 223
Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere
- Yanıt Olarak İşaretleyen tedris 18 Şubat 2016 Perşembe 15:00
- Düzenleyen Olcay GUZEL 19 Şubat 2016 Cuma 14:30
Tüm Yanıtlar
-
-
10'luk sistemde 10 ikilik sistemde 0000 1010 a karşılık gelir ki zaten yazmışsın. ~ kullandığın zaman ikilik sistemdeki karşılığında 0 olan bitleri 1, 1 olanları da 0 yapılır. Örneğin
10 = 0000 1010
~10 = 1111 0101
1111 0101 = 245
Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere
- Yanıt Olarak İşaretleyen tedris 18 Şubat 2016 Perşembe 13:42
-
Byte: C#'da işaretsiz 8 bit bir değeri temsil eder.
Yani 00000000 - 11111111 arasında değer alabilir.
2'li sayı sistemini bildiği varsayıyorum.
Örnek olarak; 11111111 = 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 255
Hafızada 8 tane deliğin (delikli kart?) dolu olduğunu düşün. Bunu okuyan uygulamaya bu 8 bitin başlangıç adresini verir ve de bu bir Byte dersen o da alır o 8 tane biti yanyana koyduktan sonra en soldan en önemli olanı (bkz: Most Significant Bit) başlayarak 2'nin katları olarak okur. Atıyorum Int dersen 32 tane okur. Bir de ilk biti işaret biti olarak var sayar eğer dolu ise(yani 1'se) negatif sayı olarak işleme sokar. Ters çevirip bir de toplamı 1 arttırarak negatif değere ulaşır.
~(tilde) operatörü: C#'da NOT işlemi görür. Bitin değerini tersine çevirir. 2lik sayı sisteminde sadece 0 ve 1 olduğu için de bu tersine çevirmeye diğerine dönüştürme olarak bakabilirsin.
Şimdi örneğe gelirsek;
00001010 = 10 olduğunu biliyorsun sanıyorum. Çünkü;
0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 1*2^3 + 1*2^1 = 8 + 2 = 10
00001010 değerinin her bitini NOT operatörü ile işleme sokarsak, yani tersine çevirirsek, yani 0 yazan yerlere 1, 1 yazan yerlere de 0 yazarsak elimizde;
11110101 bitleri olur. 2'li sayı sisteminden 10'lu sayı sistemine çevrim işlemini de buna yaparsak;
1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^2 + 1*2^2
= 128 + 64 + 32 + 16 + 4 +1
= 245
- Yanıt Olarak Öneren Önay YALÇINERModerator 18 Şubat 2016 Perşembe 13:29
-
Cevaplar için teşekkür ederim
Byte a=32;
Byte b=(byte)~a;
Console.WriteLine(b);
bunu yaparken yine bir yerde kaldım
Byte a=32; ---------Bunu 2 lik sisteme çevirdim kalan 1 yani 000 001 buluyorum bunu 8 basamakmı yapacağım ?
00 000 001 şeklinde yoksa 000 001 hali ile mi kullanacağım. ?
Byte b=(byte)~a; tersine çevirmeyi anladım 111 110 yada 11 111 110 şekline dönüşecek sonra
bunu 2 lik sisteme çevireceğim sonucu bulacağım
Console.WriteLine(b);
sp
- Düzenleyen tedris 18 Şubat 2016 Perşembe 14:37
-
iyi de 32 nin ikilik sistemde karşılığı 1 değil ki 0010 0000 dır. Bununda tersi 1101 1111 dir yani 223
Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere
- Yanıt Olarak İşaretleyen tedris 18 Şubat 2016 Perşembe 15:00
- Düzenleyen Olcay GUZEL 19 Şubat 2016 Cuma 14:30
-
-
Hesaplama yöntemi doğru. Bazı şeyleri ezbere yapmamak gerekir. Mesela hiç ikilik sistemi karıştırmasan onluk sistem olarak düşün.
a = 100
b = 000000100
hangisi daha büyük? Sorduğun soru da buna benzer. 32 yi ikilik sistemde 10 0000 şeklinde yazmanla 0010 0000 şeklinde yazman arasında fark yok. İstersen 0000 0000 0010 0000 şeklinde yaz. Hiç bir şey farketmeyecek
Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere
-
Ikilik sisteme cevirdim ne demek? 2lik sistemdeki halini string olarak yazdim demek istedin herhalde. Yanlis yapmissin, nasil 1 cikti ki?
byte a = 32; Console.WriteLine(Convert.ToString(a,2).PadLeft(8,'0')); // ya da for (int i = 7; i >= 0; i--) { Console.Write("{0}", ((1 << i) & a) != 0 ? 1 : 0); }
-
Arkadaşlar sıkıntı basamak sayısını 8 e tamamlamadan hesaplama yapmamdan kaynaklıymıştamam artık mantığını anladım.birde Bitsel işlemlerde (a&b) ifadesi oluyor bu ortadaki işaretin anlamı ve (a ve b) demek amaistenen işlem ne anlamadımbyte a=32;byte b=240;byte c=(byte)(a&b);cnin değeri 32 oluyormuş neye göre açıklarmısınız?Bu benim çözdüğüm
1*2^0=11*2^1=21*2^2=41*2^3=81*2^4=160*2^5=0TOPLAMI=31 YanlışBu da doğru olan çözüm.1*2^0=11*2^1=21*2^2=41*2^3=81*2^4=160*2^5=00*2^6=640*2^7=128TOPLAMI=31+64+128=223 Doğru
sp
- Düzenleyen tedris 19 Şubat 2016 Cuma 12:26
-
Iyi de sen 00011 111 i nereden buldun?
byte a = 32; byte b = (byte)~a; Console.WriteLine("10 luk sistemde: {0}, Ikilik sistemde: {1}", b, Convert.ToString(b,2));
Bunun icin ilkokul seviyesinden oteye matematik bilmeye bile gerek yok ki. Madem a'nin degerini buldun en azindan, 0'lari 1, 1 leri sifir yap yeter. Sen bastaki 0'lari neden 0 olarak birakiyorsun ki?
a = 0010 0000
b = 1101 1111
Bak boyle 4'lu gruplar isini daha kolaylastirabilir (nibble deniyor). Bir dortlu grubun degeri 0...15 arasindadir. En sagdaki bit pozisyonu 0. Sola dogru artiyor. Bit degeri * 2^pozisyon alip topla. Ornegin:
0010 = 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 0*8 + 0*4 + 1*2 + 0*1 = 2
Yani 2'nin kupune kadar bilmek yetiyor.
Dortlu gruplari boyle kendi icinde hesapladiktan sonra, her bir dortlu grubun sonucunu bu sefer 16'nin katlariyla hesapla:
1101 1111 icin elinde 13 (1101) ve 15 (1111) var.
13 * 16^1 + 15 * 16^0 = (13 * 16) + (15 * 1) = 208 + 15 = 223
Not: Dortlu grup icinde soyle dusun, ilk siraya 2nin katlarini yaz 8, 4, 2,1. Altina ikilik degeri:
8 4 2 1
0 0 1 0Sonrada sadece 1 olanlari alip topla:
2
Baska ornek:
8 4 2 1
1 1 0 18+4+1 = 13
- Düzenleyen CetinBasozEditor 19 Şubat 2016 Cuma 12:41
-
32 => 0010 0000
240 => 1111 0000
ikisini & işlemine aldığın zaman. Teker teker aynı sıradaki bitleri karşılaştırırsın. Aynı olanlara 1 farklı olanlara 0 yazarsın. Tek aynı olan 1 sağdan 5. olduğuna göre sonuc
0010 0000
olur. 0010 0000 da 32'ye eşittir
Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere
- Yanıt Olarak Öneren CetinBasozEditor 19 Şubat 2016 Cuma 12:50
- Düzenleyen Olcay GUZEL 19 Şubat 2016 Cuma 14:32
-
a & b islemi ayni siradaki bitleri AND ile kontrol ediyor. 1 leri DOGRU, 0 lari YANLIS gibi de dusunebilirsin:
0 ve 0 = 0
0 ve 1 = 0
1 ve 0 = 0
1 ve 1 = 1Yani sadece ayni pozisyonda her ikisi de 1 ise sonuc 1.
032 = 0010 0000 240 = 1111 0000 --------------- sonuc 0010 0000 = 32
-
-
Çok yararlı oldu sağolun ben bilmediğim için sordum zaten ilk okul ile alakası yok bilmeyince bilmiyorsun öğrenene kadar.
Şimdi özetle
& ile aynı değerler için 1
~ verilen değerin 2 lik sistemde tersi
| ile ne kasdediliyor ? Diyecektim mantık true false olayı biri 1 ise sonuç 1 dönecek karşılaştırınca değilmi ?
Bu arada hiç bilmeyenler için güzel bir başlık oldu
sp
- Düzenleyen tedris 19 Şubat 2016 Cuma 13:53
-
Yazim hatasini duzelt istersen Olcay, yoksa kafa karistirabilir :)
Abi, rakamla 1 yerine yazıyla "bir" şeklinde yazmışım onu düzelttim. Bir de "O da 32'ye eşittir" cümlesinde "O" yu sıfırla karışabilir diye cümleyi düzelttim. Başka göremedim. Senin kastettiğin bunlardan biri miydi?Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere
-
-
-
Evet | olunca da OR/Veya, ayni mantik tablosundaki true/false. Birisi 1 ise sonuc 1.
Bir de XOR var ^ ile gosterilen. Onuda "ozel OR durumu" diye dusun. Sadece degerler farkli ise sonuc 1.
0 ^ 1 => 1
1 ^ 0 => 1
0 ^ 0 => 0
1 ^ 1 => 0 (OR ile bu da 1. O nedenle adi XOR. Yani OR'un bu hali haric OR:)
-
Abi benim kafa iyice gitmiş anlaşılan :=) Söylediğin şeyi çok yanlış anlamışım.
32 => 0010 0000
yazmışsın ya. Bu benim yazdığım bir şey zannettim cevaplarıma bakıyorum 32 - 0010 0000 nerde yazmışım diye. Onu düzeltmeye çalışıyorum. Önce gittim doğruyu yanlış hale getirdim. Sonra düşününce farkettim farklı bir şeyden bahsettiğini tekrar düzelttim. Şimdi toparladım sanırım :=)
Herkes mevcut projesi bitince daha iyi ve güvenli kod yazmaya başlayacakmış. Hazır olun Türkiye'de yazılım çağ atlamak üzere