Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

Benzer belgeler
Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Floating Point (Kayan Noktalı Sayılar)

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Yrd. Doç. Dr. Caner ÖZCAN

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Yrd. Doç. Dr. Caner ÖZCAN

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri

1. Bölüm Sayı Sistemleri

ALGORİTMA VE PROGRAMLAMA II

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

BLM1011 Bilgisayar Bilimlerine Giriş I

SAYISAL ELEKTRONİK. Ege Ü. Ege MYO Mekatronik Programı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

Nesne Yönelimli Programlama

EGE ÜNİVERSİTESİ EGE MYO MEKATRONİK PROGRAMI

Dr. Fatih AY Tel: fatihay@fatihay.net

C Konsol Giriş Çıkış Fonksiyonları

Biçem Belirteçleri (Format Specifiers)

Elektronik sistemlerde dört farklı sayı sistemi kullanılır. Bunlar;

3.3. İki Tabanlı Sayı Sisteminde Dört İşlem

PROGRAMLAMAYA GİRİŞ DERS 2

Fatih University- Faculty of Engineering- Electric and Electronic Dept.

MANTIK DEVRELERİ HALL, 2002) (SAYISAL TASARIM, ÇEVİRİ, LITERATUR YAYINCILIK) DIGITAL DESIGN PRICIPLES & PRACTICES (3. EDITION, PRENTICE HALL, 2001)

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

SAYISAL DEVRELER. İTÜ Bilgisayar Mühendisliği Bölümündeki donanım derslerinin bağlantıları

2. SAYI SİSTEMLERİ 2. SAYI SİSTEMLERİ

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

2. SAYI SİSTEMLERİ. M.İLKUÇAR - imuammer@yahoo.com

SAYI SİSTEMLERİ ve BOOLE CEBİRİ 1+1=1 ÖĞR.GÖR. GÜNAY TEMÜR - TEKNOLOJİ F. / BİLGİSAYAR MÜH.

Elektroniğe Giriş 1.1

Floating Point (Kayan Noktalı Sayılar)

Adım Adım C-II. Eksik kalmış konular

Nesne Tabanlı Programlama

/*int sayi1, sayi2,toplam=0;

YZM 2105 Nesneye Yönelik Programlama

Fatih University- Faculty of Engineering- Electric and Electronic Dept.

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

PASCAL PROGRAMLAMA DİLİ YAPISI

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri 2. SAYI SĐSTEMLERĐ VE KODLAR

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

Komut Seti Mimarisi (ISA)

SAYILAR DOĞAL VE TAM SAYILAR

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

Her bir kapının girişine sinyal verilmesi zamanı ile çıkışın alınması zamanı arasında çok kısa da olsa fark bulunmaktadır -> kapı gecikmesi

Nesne Tabanlı Programlama

Sayılar Teorisi SAYILAR TEORİSİ VE SAYILAR

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-2 Değişken Kavramı ve Temel Operatörler

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

Göstericiler (Pointers)

BLM221 MANTIK DEVRELERİ

13.Konu Reel sayılar

Teknikleri. Önsöz. iskender atasoy

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Nesne Yönelimli Programlama


2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Eln 1001 Bilgisayar Programlama I

Length: metin uzunluğunu yada diğer bir deyişle dizi elaman sayısını döndürür.

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

BILGISAYAR ARITMETIGI

Bölüm 7. İfadeler ve atamalar ISBN

C Programlama Dilininin Basit Yapıları

Temel Bilgisayar Programlama

Konular MİKROİŞLEMCİ SİSTEMLERİ. Giriş. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Öncesi Kuşak

Bilgisayarların Gelişimi

Genel Programlama II

Programlama Dilleri 3

2. SAYI SİSTEMLERİ VE KODLAR

Programlama Dilleri 3

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

HSancak Nesne Tabanlı Programlama I Ders Notları

Bulanık Küme Kavramı BULANIK KÜME. Sonlu ve Sonsuz Bulanık Kümeler. Sonlu ve Sonsuz Bulanık Kümeler

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İÇİNDEKİLER. Mantık Kurallarının Elektrik Devrelerine Uygulanması... 14

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

BÖLÜM 2 SAYI SİSTEMLERİ

DSP DONANIMI. Pek çok DSP için temel elemanlar aşağıdaki gibidir.

C Programlama. C Programlama. Alper Bayrak Abant İzzet Baysal Üniversitesi Bolu

Java da İşleçler, Ders #3 (4 Kasım 2009)

INTEGER OVERFLOW ***************************************************************/

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

SAYI SİSTEMLERİ. Sayı Sistemleri için Genel Tanım

Lineer Dönüşümler ÜNİTE. Amaçlar. İçindekiler. Yazar Öğr. Grv.Dr. Nevin ORHUN

Transkript:

Bit, Byte ve Integer BIL-304: Bilgisayar Mimarisi Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe Ders kitabına ait sunum dosyalarından adapte edilmiştir: http://csapp.cs.cmu.edu/ Adapted from slides of the textbook: http://csapp.cs.cmu.edu/ 1

Bit, Byte ve Integer Bilginin bitler ile ifade edilmesi Bit düzeyinde manipülasyonlar Integer unsigned ve signed Dönüştürme (conversion), tip dönüşümü (casting) Genişletme (expanding), kırpma (truncating) Toplama, işaret değiştirme (negation), çarpma, kaydırma Bilginin hafızada saklanma şekilleri, pointer lar, karakter dizileri (string ler) 2

Herşey bit ile ifade edilir Her bit 0 veya 1 dir. Bit gruplarının değişik şekillerde kodlanması/anlamlandırılması ile Bilgisayarlar ne yapacaklarına karar verirler (komutlar, opcode lar..) ve sayıları, karakter dizilerini, vs ifade edip manipüle ederler. Neden bit? Elektronik sistem olarak uygulama kolaylığı İki durumlu elektronik elemanlarla kaydetmek kolaydır. Gürültü altında bile analog sinyallere göre daha güvenli iletilebilirler. 1.1V 0.9V 0.2V 0.0V 0 1 0 3

Byte Değerlerinin Kodlanması Byte = 8 bit Binary 000000002 den 111111112 ye kadar. Onluk tabanda: 010-25510 Onaltılık tabanda: 0016 - FF16 16 tabanında sayıların ifade edilmesi 0 dan 9 a rakamlar ve A dan F e karakterler C dilinde FA1D37B16 şu şekillerde yazılır: 0xFA1D37B 0xfa1d37b 0 0 0000 1 1 0001 2 2 0010 3 4 3 4 0011 0100 5 5 0101 6 6 0110 7 7 0111 8 9 8 9 1000 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 4

C de veri tiplerinin tipik boyutları C Veri Tipi 32-bit program 64-bit program char 1 1 short 2 2 int 4 4 long 4 8 int32_t 4 4 Int64_t 8 8 float 4 4 double 8 8 char * 4 8 5

Bit, Byte ve Integer Bilginin bitler ile ifade edilmesi Bit düzeyinde manipülasyonlar Integer unsigned ve signed Dönüştürme (conversion), tip dönüşümü (casting) Genişletme (expanding), kırpma (truncating) Toplama, işaret değiştirme (negation), çarpma, kaydırma Bilginin hafızada saklanma şekilleri, pointer lar, karakter dizileri (string ler) 6

Boole Cebri George Boole tarafından 19. yüzyılda geliştirilmiştir. Lojiğin cebirsel ifadesidir Doğru 1 ile Yanlış 0 ile kodlanır. Ve (And) Veya (Or) Hem A=1 hem de B=1 ise A&B = 1 A=1 veya B=1 ise A B = 1 Değil (Not) A=0 ise ~A = 1 Özel-veya (Exclusive-Or, Xor) A=1 veya B=1 ise fakat ikisi birden 1 değilse A^B = 1 7

Genel Boole Cebri Bit vektörleri (bit dizileri) üzerinde işlemler İşlemler bit düzeyinde karşılıklı bitler arasında uygulanır &01101001 &01010101 01000001 01101001 01010101 01111101 ^ 01101001 ^ 01010101 00111100 ~ 01010101 01000001 01111101 00111100 10101010 Boole cebrinin tüm özellikleri geçerlidir 8

Küme şeklinde gösterim ve Manipülasyonlar Gösterim w genişliğinde bir A bit dizisi {0,, w 1} kümesinin bir alt kümesidir Eğer j A ise a j = 1 dir. a j, A daki herbir biti göstermektedir. 01101001 { 0, 3, 5, 6 } A 76543210 01010101 { 0, 2, 4, 6 } B 76543210 A ve B kümeleriyle işlemler & Kesişim 01000001 { 0, 6 } Birleşim 01111101 { 0, 2, 3, 4, 5, 6 } ^ Simetrik Fark (XOR) 00111100 { 2, 3, 4, 5 } ~ Tümleyen 10101010 { 1, 3, 5, 7 } 9

C de Bit-Düzeyinde İşlemler C de &,, ~, ^ işlemleri bulunmaktadır. Tam sayıların sonlu bir alt kümesini gösteren tüm veri tiplerine ( integral veri tipi) uygulanabilirler. long, int, short, char, unsigned Argümanları bir vektörü olarak görürler Argümanlar bit-düzeyinde işleme tabi tutulurlar Örnekler (Char veri tipi için) ~0x41 0xBE ~010000012 101111102 ~0x00 0xFF ~000000002 111111112 0x69 & 0x55 0x41 011010012 & 010101012 010000012 0x69 0x55 0x7D 011010012 010101012 011111012 10

C de Lojik (Mantıksal) İşlemler Bit-Düzeyinde işlemlerden farklıdırlar Semboller VE: &&, VEYA:, DEĞİL:! 0 Yanlış Sıfırdan farklı değer Doğru Ya 0 (Yanlış) ya da 1 (Doğru) değeri dönerler Lojik ifadenin değeri birinci argümana bakılarak belirlenebiliyorsa ikinci argüman değerlendirilmez. Örnekler (char veri tipi. İşlemlerin bit-düzeyindeki karşılıklarından farklı sonuçlar çıkabildiğine dikkat ediniz!)!0x41 0x00!0x00 0x01!!0x41 0x01 0x69 && 0x55 0x01 0x69 0x55 0x01 (0x69 Doğru olduğu için VEYA operatöründen sonra gelen ikinci argümanı değerlendirmeye gerek kalmaz) p && *p (Null pointer erişimi hatasını önler, p=0 ise p bir Null pointer dir, operatör VE olduğu için *p yi değerlendirmeden sonucun 0 olduğu sonucuna varılır.) a && 5/a (a=0 ise ikinci argüman işletilmeden 0 döner; hiçbir zaman sıfıra bölme hatası ile karşılaşılmaz.) 11

C de Lojik (Mantıksal) İşlemler Bit-Düzeyinde işlemlerden farklıdırlar Semboller VE: &&, VEYA:, DEĞİL:! 0 Yanlış Sıfırdan farklı değer Doğru Ya 0 (Yanlış) ya da 1 (Doğru) değeri dönerler Lojik ifadenin değeri birinci argümana bakılarak belirlenebiliyorsa ikinci argüman değerlendirilmez. Örnekler (char veri tipi. İşlemlerin bit-düzeyindeki karşılıklarından farklı sonuçlar çıkabildiğine dikkat ediniz!)!0x41 0x00!0x00 0x01!!0x41 0x01 0x69 && 0x55 0x01 0x69 0x55 0x01 (0x69 Doğru olduğu için VEYA operatöründen sonra gelen ikinci argümanı değerlendirmeye gerek kalmaz) p && *p (Null pointer erişimi hatasını önler, p=0 ise p bir Null pointer dir, operatör VE olduğu için *p yi değerlendirmeden sonucun 0 olduğu sonucuna varılır.) a && 5/a (a=0 ise ikinci argüman işletilmeden 0 döner; hiçbir zaman sıfıra bölme hatası ile karşılaşılmaz.) 12

C de Lojik (Mantıksal) İşlemler Bit-Düzeyinde işlemlerden farklıdırlar Semboller VE: &&, VEYA:, DEĞİL:! 0 Yanlış Sıfırdan farklı değer Doğru Ya 0 (Yanlış) ya da 1 (Doğru) değeri dönerler DİKKAT! && Mantıksal, & Bit-düzeyinde VE Mantıksal, Bit-düzeyinde VEYA Lojik ifadenin değeri birinci argümana bakılarak belirlenebiliyorsa ikinci argüman değerlendirilmez. Örnekler (char veri tipi. İşlemlerin bit-düzeyindeki karşılıklarından farklı sonuçlar çıkabildiğine dikkat ediniz!)!0x41 0x00!0x00 0x01!!0x41 0x01 0x69 && 0x55 0x01 0x69 0x55 0x01 (0x69 Doğru olduğu için VEYA operatöründen sonra gelen ikinci argümanı değerlendirmeye gerek kalmaz) p && *p (Null pointer erişimi hatasını önler, p=0 ise p bir Null pointer dir, operatör VE olduğu için *p yi değerlendirmeden sonucun 0 olduğu sonucuna varılır.) a && 5/a (a=0 ise ikinci argüman işletilmeden 0 döner; hiçbir zaman sıfıra bölme hatası ile karşılaşılmaz.) 13

Kaydırma (Shift) İşlemleri Sola Kaydırma: x << y x bit vektörünü y kadar sola kaydırır. Soldaki ekstra bitler atılır. Sağdaki kayan bitlerin yeri 0 ile doldurulur. Sağa kaydırma: x >> y x bit vektörünü y kadar sağa kaydırır. Sağdaki ekstra bitler atılır. İki tipi vardır: Lojik ve Aritmetik Lojik kaydırma Soldaki kayan bitlerin yeri 0 ile doldurulur. Aritmetik kaydırma Soldaki kayan bitlerin yeri işaret biti ile doldurulur. Tanımlanmamış durumlar Kaydırma miktarı 0 dan küçük ise veya word size a eşit ya da word size dan büyük ise. Argüman x << 3 Lojik >> 2 Arit. >> 2 Argüman x << 3 Lojik >> 2 Arit. >> 2 01100010 00010000 00011000 00011000 10100010 00010000 00101000 11101000 İki tip sağa kaydırma olmasına rağmen C de tek bir sağa kaydırma operatörü vardır, >>. Birçok C compiler ı sağa kaydırmanın tipini integer ın türüne göre belirler; sıklıkla signed integer lar aritmetik kaydırmaya göre, unsigned integer lar da lojik kaydırmaya göre sağa kaydırılır. 14

Swap (Değiş-Tokuş) void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } Problem: Yukarıdaki iki integer ın değerlerini değiş-tokuş etmemizi sağlayan swap fonksiyonunu geçici bir değişken kullanmadan yapabilir miyiz? Yol gösterme: Bit-düzeyinde XOR (^) kullanınız. A^A=0 ve A^0=A dır. 15

Xor ile Değiş-Tokuş Bit-düzeyinde Xor bir tür toplamadır. Xor un A ^ A = 0 olmasını sağlayan ekstra özelliği (Her değer kendisinin Xor ile toplamaya göre tersidir.) ve A^0=A sayesinde funny adlı fonksiyonu yazabiliriz. void funny(int *x, int *y) { *x = *x ^ *y; /* #1 */ *y = *x ^ *y; /* #2 */ *x = *x ^ *y; /* #3 */ } Başlangıç 1 2 3 Bitiş *x A A^B A^B (A^B)^A = B B *y B B (A^B)^B = A A A 16

Bit, Byte ve Integer Bilginin bitler ile ifade edilmesi Bit düzeyinde manipülasyonlar Integer unsigned ve signed Dönüştürme (conversion), tip dönüşümü (casting) Genişletme (expanding), kırpma (truncating) Toplama, işaret değiştirme (negation), çarpma, kaydırma Bilginin hafızada saklanma şekilleri, pointer lar, karakter dizileri (string ler) 17

Integer ların kodlanması Unsigned (işaretsiz) w 1 B2U(X) x i 2 i i 0 short int x = 15213; short int y = -15213; C de short 2 byte uzunluğundadır. İşaret Biti 2 tümleyene göre işaretli sayıları gösterdiğimizde en anlamlı bit işaret bitidir Negatif olmayan sayılar için işaret biti 0 Negatif sayılar için 1 dir. w 2 B2T(X) x w 1 2 w 1 x i 2 i Decimal Hex Binary x 15213 3B 6D 00111011 01101101 y -15213 C4 93 11000100 10010011 2 tümleyene göre signed (işaretli) i 0 İşaret Biti 18

2 Tümleyen kodlama örnekleri x = 15213: 00111011 01101101 y = -15213: 11000100 10010011 Ağırlık 15213-15213 1 1 1 1 1 2 0 0 1 2 4 1 4 0 0 8 1 8 0 0 16 0 0 1 16 32 1 32 0 0 64 1 64 0 0 128 0 0 1 128 256 1 256 0 0 512 1 512 0 0 1024 0 0 1 1024 2048 1 2048 0 0 4096 1 4096 0 0 8192 1 8192 0 0 16384 0 0 1 16384-32768 0 0 1-32768 Toplam 15213-15213 19

İkili sayıların bir özelliğinin tümevarım ile ispatı Önerme 1 + 1 + 2 + 4 + 8 + + 2 w-1 = 2 w w = 0: 1 = 2 0 w-1 1+ å 2 i = 2 w w=k için doğru olduğunu kabul edelim: i=0 w=k+1 için: 1 + 1 + 2 + 4 + 8 + + 2 k-1 + 2 k = 2 k + 2 k = 2 k+1 = 2 k 20

Nümerik Sınır (Limit) Değerler ve Bazı Özel Değerler Unsigned değerler UMin = 0 000 0 UMax = 2 w 1 111 1 w = 16 bit genişliği için değerler 2 Tümleyen Değerler TMin = 2 w 1 100 0 TMax = 2 w 1 1 011 1 Özel Değerler Negatif 1 111 1 Sıfır 000 0 Decimal Hex Binary UMax 65535 FF FF 11111111 11111111 TMax 32767 7F FF 01111111 11111111 TMin -32768 80 00 10000000 00000000-1 -1 FF FF 11111111 11111111 0 0 00 00 00000000 00000000 21

Farklı Word Size lar için Değerler W (Word size) 8 16 32 64 UMax 255 65,535 4,294,967,295 18,446,744,073,709,551,615 TMax 127 32,767 2,147,483,647 9,223,372,036,854,775,807 TMin -128-32,768-2,147,483,648-9,223,372,036,854,775,808 Gözlemler TMin = TMax + 1 Asimetrik sınır değerler UMax = 2 * TMax + 1 C Programlamada Limit değerler #include <limits.h> içinde tanımlanır Aşağıdaki gibi sabitler tanımlanır, ULONG_MAX LONG_MAX LONG_MIN Değerler platforma bağlı olarak değişkenlik gösterir. 22

Unsigned & Signed Nümerik Değerler X B2U(X) B2T(X) 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 7 1010 10 6 1011 11 5 1100 12 4 1101 13 3 1110 14 2 1111 15 1 Negatif olmayan değerlerde eşitlik Negatif olmayan değerler aynı bit vektörleriyle ifade edilir Teklik (Uniqueness) Her bit vektörü tek bir integer değerini ifade eder. İfade edilebilen her integer tek bir bit vektörüyle ifade edilir. Eşleştirmeler tersine çevrilebilir U2B(x) = B2U -1 (x) U2B, x unsigned integer ının bit vektörünü verir. T2B(x) = B2T -1 (x) T2B, 2 tümleyene göre ifade edilen x integer ının bit vektörünü verir. 23

Bit, Byte ve Integer Bilginin bitler ile ifade edilmesi Bit düzeyinde manipülasyonlar Integer unsigned ve signed Dönüştürme (conversion), tip dönüşümü (casting) Genişletme (expanding), kırpma (truncating) Toplama, işaret değiştirme (negation), çarpma, kaydırma Bilginin hafızada saklanma şekilleri, pointer lar, karakter dizileri (string ler) 24

Signed & Unsigned arasında eşleştirmeler 2 Tümleyene göre sayı Unsigned x T2B T2U X B2U Aynı bit dizisi korunur ux Unsigned ux U2B U2T X B2T 2 Tümleyene göre sayı x Aynı bit dizisi korunur unsigned ve 2 tümleyene göre verilen işaretli sayılar arasında eşleştirmeler: Bit dizisini aynen koru ve yeniden yorumla 25

Signed Unsigned arası eşleştirme Bit dizisi Signed Unsigned 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 0110 0111 5 6 7 T2U U2T 5 6 7 1000-8 8 1001-7 9 1010-6 10 1011 1100-5 -4 11 12 1101-3 13 1110-2 14 1111-1 15 26

Signed Unsigned arası eşleştirme Bits Signed Unsigned 0000 0 0 0001 1 1 0010 0011 0100 2 3 4 = 2 3 4 0101 5 5 0110 6 6 0111 7 7 1000-8 8 1001-7 9 1010 1011-6 -5 +/- 16 10 11 1100-4 12 1101-3 13 1110-2 14 1111-1 15 27

Signed & Unsigned arası ilişki 2 Tümleyene göre sayı Unsigned x T2B T2U X B2U Aynı bit dizisi korunur ux ux x w 1 0 + + + + + + - + + + + + Büyük negatif ağırlık Büyük pozitif ağırlığa dönüşür 28

Dönüştürmenin görsel gösterimi 2 Tümleyene göre sayı Unsigned Sıralama değişim gösterir. Negatif sayı Büyük Pozitif sayıya dönüşür. TMax UMax UMax 1 TMax + 1 TMax Unsigned sayı aralığı 2 Tümleyen sayı aralığı 0 1 2 0 TMin 29

C de Signed ve Unsigned Sabitler Varsayılan olarak signed integer kabul edilirler. Eğer U son eki kullanılmışsa o zaman unsigned dırlar. 0U, 4294967259U Tip dönüşümü (Casting) U2T ve T2U daki gibi signed & unsigned arasındaki doğrudan, belirgin (Explicit) tip dönüşümü int tx, ty; unsigned ux, uy; tx = (int) ux; uy = (unsigned) ty; Aynı zamanda atama ve yordam çağrısı (procedure call) ile de dolaylı olarak (Implicit) tip dönüşümü gerçekleşir. tx = ux; uy = ty; 30

Tip Dönüşümü (Casting) Süprizleri İfadelerin (Expression) İşletilmesi, Değerlendirilmesi (Evaluation) Eğer bir ifade içinde unsigned ve signed karışık olarak bulunuyorsa, signed değerler dolaylı olarak unsigned a dönüştürülür Karşılaştırma işlemlerini de kapsar <, >, ==, <=, >= W = 32 için örnekler: TMIN = -2,147,483,648, TMAX = 2,147,483,647 Sabit 1 Sabit 2 İlişki Değerlendirme 0 0 0U 0U == unsigned -1-1 0 0 < signed -1-1 0U 0U > unsigned 2147483647 2147483647-2147483647-1-2147483648 > signed 2147483647U 2147483647U -2147483647-1 -2147483648 < unsigned -1-1 -2-2 > signed (unsigned)-1 (unsigned) -1-2 -2 > unsigned 2147483647 2147483647 2147483648U < unsigned 2147483647 2147483647 (int) (int) 2147483648U > signed 31

Özet Signed Unsigned Tip Dönüşümü: Temel Kurallar Bit dizisi korunur Fakat yeniden yorumlanır. Hiç beklenmedik etkileri olabilir: 2 w kadar büyüklükte ekleme veya çıkarma signed ve unsigned int aynı ifade içinde yer alıyorsa: int, unsigned a dönüştürülür!! 32