THT DUYURU

 
 
Kriptografi - Şifreleme Şifreleme Ve Şifreleme Sistemleri Hakkında Her şey.

Seçenekler

Signed & Unsigned Sayı Türleri

X-Code - ait Kullanıcı Resmi (Avatar)
Yardımsever
Üyelik tarihi:
03/2019
Nereden:
Localhost
Mesajlar:
1.492
Konular:
175
Teşekkür (Etti):
363
Teşekkür (Aldı):
983
Ticaret:
(0) %
2
2751
21-11-2020 19:29
#1


Merhaba TürkHackTeam Üyeleri.
Bu Konumda Sizlere Signed Ve Unsigned Sayılardan Bahsedeceğim.





Signed Ve Unsigned Nedir?

Signed ve unsigned'ı anlatmaya geçmeden önce sizlere ikilik yani binary sayı sisteminden bahsetmek istiyorum. Bilgisayarlar daha doğrusu elektronik sistemler binary sayı sistemini kullanırlar. Hani hep duyduğumuz, gördüğümüz, bilgisayar denilince ilk akla gelen 0 ve 1 rakamları binary sistemini oluşturur. Binary sisteminde her şey 0 ve 1 rakamlarının farklı durumlarda yan yana gelmesiyle oluşur. Bilgisayarların bu sayı sistemini kullanmasının sebebi ise elektronik devrelerde bu sistemin kolay uygulanabilir olmasıdır. Zira elektrik akımının gerilmesi 1'i gerilmemesi 0'ı temsil eder. Ve böylelikle elektronik devreler bu sayı sistemi ile kolaylıkla kontrol edilebilir.



Biz insanlar günlük hayatımızda 10'luk sayı sistemini yani decimal sayı sistemini kullanırız. Ve bu onluk tabanda sayılar 0,1,2,3,4,5,6,7,8,9 rakamları kullanılarak ifade edilir. Bu sayı sistemine 10'luk sayı sistemi denmesinin sebebi ise her basamağın 10'un kuvvetleri ile çarpılmasından dolayıdır. Mesela 2020 sayısının değeri aşağıdaki şekilde elde edilir.

Alıntı:
2020 = 2x10³ + 0x10² +2x10¹ + 0x10°
İkilik sayı sisteminde ise sadece 0 ve 1 rakamları kullanılır. Dolayısıyla da her basamak 2'nin kuvvetleri ile çarpılır. Bu 0 ve 1 rakamlarının her birine bit denir. Mesela 20 sayısının binary karşılığı 10100 şeklindedir ve aşağıdaki gibi ifade edilir.

Alıntı:
10100 = 1x2⁴ + 0x2³ + 1x2² + 0x2¹ + 0x2°
Bu şekilde bizim bilgisayarda yaptığımız her şey ikilik tabanda yürütülür ve elektronik devreler birbirleri ile 0 ve 1 rakamlarını kullanarak haberleşip işlemlerini yaparlar.



Şimdiye kadar bu sayıların işaretlerinden bahsetmedik. Yani sayıların + mı yoksa - mi olduğundan bahsetmedik. İşaretlerinden bahsedecek olduğumuzda ise, işe signed (işaretli) ve unsigned (işaretsiz) terimleri giriyor. Signed sayılar içerisinde negatif(-) ve pozitif(+) değerleri tutabilirken unsigned sayılar 0 ve pozitif(+) değerleri tutabiliyor.

Bir sayının pozitif mi yoksa negatif mi olduğunu bulmak içinde sayının ilk bitine bakarız. Eğer ilk bit 0 ile başlıyorsa bu sayı pozitiftir, 1 ile başlıyorsa da negatifdir. Mesela 8 bitlik aşağıdaki sayıları inceleyelim.

Alıntı:
1 = 0000 0001
2 = 0000 0010
Bu sayıların ikiside pozitif çünkü ilk bitleri 0 ile başlıyor.
Peki bu sayıları negatife nasıl çevirebiliriz. Negatife çevirmek içinde bitlerin tersi alınıp sayıya 1 eklenir. Mesela 3 sayısının negatifi şu şekilde bulunur.

Alıntı:
+3 = 0000 0011 -> 3 sayısı
= 1111 1100 -> 3 sayısının değili
= 1111 1101 -> 3 sayısının değiline +1 eklenmesi

-3 = 1111 1101 -> -3 sayısı


Gördüğünüz gibi pozitif sayının ilk biti 0 ile başlarken negatif sayının ilk biti 1 ile başlıyor.
Bir örnek yapalım ve 11101011001 binary sayısının değerinin signed ve unsigned sayı sistemine göre decimal karşılıklarını bulalım.

Unsigned için bu sayının değeri decimal sistemde 1881 çıkıyor. Nasıl hesaplandığını aşağıya bakarak öğrenebilirsiniz.

Alıntı:
11101011001 = 1x2¹º + 1x2⁹ + 1x2⁸ + 0x2⁷ + 1x2⁶ + 0x2⁵ + 1x2⁴ + 1x2³ + 0x2² + 0x2¹ + 1x2° => 1024 + 512 + 256 + 0 + 64 + 0 + 16 + 8 + 0 + 1 = 1881
Signed için ise bu sayının değeri -167 çıkıyor. Nasıl hesaplandığını aşağıya bakarak öğrenebilirsiniz. Signed hesaplama yaparken ilk bit işaret biti olarak alınır. Ve ilk bit 0 ise ilk bitin basamağı + olarak işlem yapılır. Eğer ilk bit 1 ise de ilk bitin basamağı - olarak işlem yapılır. Birnevi signed sayı türünün decimal karşılığı hesaplanırken ilk bit 0 ise unsigned ile aynı şekilde hesaplanır, 1 ise de ilk basamağın önüne eksi konarak hesaplanır.

Alıntı:
11101011001 = -1x2¹º + 1x2⁹ + 1x2⁸ + 0x2⁷ + 1x2⁶ + 0x2⁵ + 1x2⁴ + 1x2³ + 0x2² + 0x2¹ + 1x2° => -1024 + 512 + 256 + 0 + 64 + 0 + 16 + 8 + 0 + 1 = -167
Bu signed ve unsigned sayı türleri birçok programlama dilinde veri tiplerinde kullanılır. Mesela char veri tipi 1 bayt yani 8 bitten oluşur. Örneğin yukarıda 1 sayısının binary karşılığını göstermiştim. Bu binary karşılığını 8 bit ile yani 0000 0001 olarak gösterdim. Peki bu char veri tipinde maksimum ve minimum değerleri bulmak istediğimizde signed ve unsigned için ayrı ayrı değerler buluruz. Zira unsigned sıfır ve pozitif sayılardan oluşurken signed sayılar pozitif ve negatif sayılardan oluşabiliyor. Char veri tipinde yani 8 bitlik bir binary sisteminde alabileceğiniz maksimum ve minimum değerler aşağıdaki gibidir.

Alıntı:
Signed char da alınabilecek maksimum değer => 0111 1111 yani 127 dir.
Signed char da alınabilecek minimum değer => 1000 0000 yani -128 dir.

Unsigned char da alınabilecek maksimum değer => 1111 1111 yani 255 dir.
Unsigned char da alınabilecek minimum değer => 0000 0000 yani 0 dır.








Okuduğunuz İçin Teşekkür Ederim.
Esenlikle Kalın..

Saygılarımla





---------------------
Konu 'Adige tarafından (10-12-2020 02:21 Saat 02:21 ) değiştirilmiştir.
- Teşekkür etti.
'Adige - ait Kullanıcı Resmi (Avatar)
Ar-Ge Tim Lideri
Üyelik tarihi:
10/2012
Nereden:
Secure Shell
Yaş:
27
Mesajlar:
9.226
Konular:
572
Teşekkür (Etti):
814
Teşekkür (Aldı):
1986
Ticaret:
(0) %
10-12-2020 02:28
#2
Emeğinize sağlık
---------------------
"Kendinizi geliştirmeye o kadar çok zaman harcayın ki Başkalarının yaptıklarıyla ilgilenmeye ve onları eleştirmeye vaktiniz olmasın"



X-Code, - Teşekkür etti.
TürK.KuRdU - ait Kullanıcı Resmi (Avatar)
Kıdemli Üye
Üyelik tarihi:
04/2016
Nereden:
'm
Mesajlar:
3.984
Konular:
315
Teşekkür (Etti):
964
Teşekkür (Aldı):
1287
Ticaret:
(0) %
10-12-2020 03:12
#3
eline emeğine sağlık.
--------------------- hate me, won't break me, I’m killing everyone i love
X-Code, - Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler