Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. 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: Dr. Öğr. Üyesi Fatih Gökçe

Floating Point (Kayan Noktalı Sayılar)

Floating Point (Kayan Noktalı Sayılar)

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

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

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

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

Komut Seti Mimarisi (ISA)

Nesne Yönelimli Programlama

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

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

Yrd. Doç. Dr. Caner ÖZCAN

Sayı sistemleri-hesaplamalar. Sakarya Üniversitesi

Yrd. Doç. Dr. Caner ÖZCAN

Sayı Sistemleri. Onluk, İkilik, Sekizlik ve Onaltılık sistemler Dönüşümler Tümleyen aritmetiği

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

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

BILGISAYAR ARITMETIGI

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

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

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

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

Dr. Fatih AY Tel: fatihay@fatihay.net

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

BLM1011 Bilgisayar Bilimlerine Giriş I

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

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

Elektroniğe Giriş 1.1

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

İKİLİ SAYILAR VE ARİTMETİK İŞLEMLER

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

Bölüm 7 Gelişmiş Fonksiyon Komutları

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

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

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

C++ Operatörler (Operators)

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

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

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

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

Özet DERS 5. Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma. Bayraklardaki Durumlar. İşaretli Çarpma

Algoritmalar ve Programlama. DERS - 2 Yrd. Doç. Dr. Ahmet SERBES

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

Bölüm 4 Aritmetik Devreler

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

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

Java da Program Denetimi ve Operatörler

Bilgisayar Sistemlerine Genel Bakış

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

Biçem Belirteçleri (Format Specifiers)

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

1. Bölüm Sayı Sistemleri

2. Sayı Sistemleri. En küçük bellek birimi sadece 0 ve 1 değerlerini alabilen ikili sayı sisteminde bir basamağa denk gelen Bit tir.

BILGISAYAR ARITMETIGI

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

8086 Mikroişlemcisi Komut Seti

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

C Konsol Giriş Çıkış Fonksiyonları

BM-311 Bilgisayar Mimarisi

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

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

PROGRAMLAMAYA GİRİŞ DERS 2

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

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

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

ÜNİTE: TAM SAYILAR KONU: Tam Sayılar Kümesinde Çıkarma İşlemi

YZM 2116 Veri Yapıları

TAM SAYILARLA TOPLAMA ÇIKARMA

2. SAYI SİSTEMLERİ VE KODLAR

Data Communications. Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü. 10. Hata Kontrolü

10 LU SAYISAL SİSTEMİ İLE 2 Lİ SAYISAL SİSTEMİ ARASINDA ÇEVİRİM UYGULAMASI

Nesne Tabanlı Programlama

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

Nesne Tabanlı Programlama

İç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

pfrintf fonksiyonu: Çıkışın formatlı olması ve bunun bir dosyaya yazdırılması durumlarında kullanılır. fprintf fonksiyonunun genel yazım biçimi,

Genel Programlama II

BİLGİSAYAR PROGRAMLAMA DERSİ

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

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

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

Bir işaretli büyüklük sayısında en soldaki basamak bir işaret içerir. Diğer basamaklarda ise sayısal değerin büyüklüğü (mutlak değeri) gösterilir.

Degişken Tanımlama Ve Operatörler

TAMSAYILAR. 9www.unkapani.com.tr. Z = {.., -3, -2, -1, 0, 1, 2, 3, } kümesinin her bir elemanına. a, b, c birer tamsayı olmak üzere, Burada,

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. İşlenenin Yeri. Örnek MİB Buyruk Yapısı. İvedi Adresleme. Adresleme Yöntemleri. Bellek. Kütükler.

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

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Programlama Dilleri 3

İşlem Buyrukları MİKROİŞLEMCİ SİSTEMLERİ. İşlem Buyrukları. İşlem Buyrukları. İşlem Buyrukları. İşlem Buyrukları

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

Transkript:

Bit, Byte ve Integer BIL-304: Bilgisayar Mimarisi Dersi veren öğretim üyesi: Yrd. Doç. Dr. 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

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 2

Ö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!! 3

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) 4

İşaret Genişletme (Extension) Görev: w-bit boyutunda signed integer x veriliyor. x i w+k-bitlik aynı değerdeki integer a dönüştür. Kural: İşaret bitinin k tane kopyasını oluştur: X = x w 1,, x w 1, x w 1, x w 2,, x 0 MSB (En anlamlı bit) in k tane kopyası X w X k w 5

İşaret Genişletme Örnek short int x = 15213; int ix = (int) x; short int y = -15213; int iy = (int) y; Onluk Hex İkili x 15213 3B 6D 00111011 01101101 ix 15213 00 00 3B 6D 00000000 00000000 00111011 01101101 y -15213 C4 93 11000100 10010011 iy -15213 FF FF C4 93 11111111 11111111 11000100 10010011 16 bitlik küçük integer veri tipinden (short int) 32 bitik büyük integer veri tipine (int) dönüştürme C otomatik olarak işaret genişletme uygular 6

Özet: Genişletme(Expanding), Kırpma (Truncating): Temel Kurallar Genişletme (örneğin, short int ten int e) Unsigned: Sıfırlar eklenir Signed: İşaret genişletme Her ikisi de beklenen sonuçları verir. Kırpma (örneğin, unsigned dan unsigned short a) Unsigned/signed: bitler kırpılır. Sonuç tekrar yorumlanır Unsigned: mod alma işlemine eşdeğerdir. Signed: mod alma işlemine benzer. Küçük sayılar için beklenen sonuçları verir. 7

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) 8

Unsigned Toplama u ve v operandları: w bitlik Gerçek Toplam: w+1 bit u + v u + v Elde ihmal edilir: w bit UAdd w (u, v) Standart Toplama Fonksiyonu Elde çıktısını ihmal eder. Modüler Aritmetiği Uygular s = UAdd w (u, v) = u + v mod 2 w UAdd w (u,v) u v u v 2 w u v 2 w u v 2 w 9

(Matematiksel) Integer Toplamanın Görselleştirilmesi Integer Toplama 4-bitlik integerlar u, v Gerçek toplamı hesaplar Add 4 (u, v) Toplam değer u ve v ile doğrusal şekilde artar. Düzlemsel bir yüzey oluşturur. 32 28 24 20 16 12 8 4 0 0 2 u 4 6 8 Add 4 (u, v) Integer Addition 2 10 0 12 14 4 6 8 v 10 12 14 10

Unsigned Toplamanın Görselleştirilmesi Başa sarar Eğer gerçek toplam 2 w ise En fazla bir kez başa sarar Taşma UAdd 4 (u, v) Gerçek Toplam 2 w+1 Taşma 16 14 12 10 2 w 0 Modu alınmış Toplam 8 6 4 2 0 0 u 2 4 6 8 10 12 14 0 2 4 6 8 10 12 v 14 11

2 Tümleyen ile ifade edilen sayıların Toplamı u ve v operandları: w bitlik Gerçek Toplam: w+1 bit u + v u + v Elde ihmal edilir: w bit TAdd w (u, v) TAdd ve UAdd Bit-seviyesinde bakarsak birebir aynı işlemi yapar: C de Signed ve unsigned toplama karşılaştırılırsa int s, t, u, v; s = (int) ((unsigned) u + (unsigned) v); t = u + v s == t doğru döner. 12

TAdd Taşması (Elde biti taşmasından farklıdır.) Toplamanın İşlevi Gerçek toplam w+1 bit gerektirir. MSB, yani en anlamlı bit düşürülür, atılır. Geriye kalan bit dizisi 2 Tümleyene göre oluşturulmuş bir integer olarak değerlendirilir. 0 111 1 0 100 0 0 000 0 1 011 1 1 000 0 Gerçek Toplam 2 w 1 2 w 1 1 0 2 w 1 100 0 2 w Pozitif Taşma Negatif Taşma TAdd Sonucu 011 1 000 0 13

2 Tümleyen Toplamasının Görselleştirilmesi Negatif Taşma Değerler 4-bit 2 Tümleyen sayılar. -8 to +7 aralığındadırlar. Başa sarar Eğer toplam 2 w 1 Negatif olur. En fazla bir kez başa sarar. Eğer toplam < 2 w 1 Pozitif olur En fazla bir kez başa sarar. 8 6 4 2 0-2 -4-6 -8-8 -6-4 -2 u 0 2 TAdd 4 (u, v) -2-4 -6-8 4 6 6 4 2 0 v Pozitif Taşma 14

TAdd ın tanımlanması İşlevi Gerçek toplam w+1 bit gerektirir MSB, yani en anlamlı bit düşürülür, atılır. Geriye kalan bit dizisi 2 Tümleyene göre oluşturulmuş bir integer olarak değerlendirilir. TAdd(u, v) > 0 v < 0 Negatif Taşma < 0 > 0 u Pozitif Taşma TAdd w (u,v) u v w 1 2 w u v u v 2 w 1 w u v TMin w (Negatif Taşma) TMin w u v TMax w TMax w u v (Pozitif Taşma) 15

TAdd ın tanımlanması İki pozitif sayının toplamı negatif ise pozitif taşma; iki negatif sayının toplamı pozitif ise negatif taşma olmuş demektir. Bit düzeyinde toplama işleminde (w+1). bite aktarılması gereken elde oluşmuş olması pozitif veya negatif taşmayı garantilemez. (w+1). bite aktarılması gereken elde oluşmadan da taşma oluşabilir; elde oluşup taşmanın olmaması da mümkündür. http://sandbox.mc.edu/~bennet/cs110/tc/add.html den alınan şu örnekleri inceleyiniz. 16

İşaret Değiştirme (Negation): 1 Tümleyen alma + 1 Arttırma 2 tümleyen için şu geçerlidir: ~x + 1 == -x Gözlem: ~x + x == 1111 111 == -1 + x ~x -1 1 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 Tneg w (u) TComp w (u) u TMin w u TMin w u TMin w Tmin in işaretini değiştirmek istediğimizde yine kendisini elde ederiz. 17

1 Tümleyen alma + 1 Arttırma Örnekleri x = 15213 Onluk Hex İkili x 15213 3B 6D 00111011 01101101 ~x -15214 C4 92 11000100 10010010 ~x+1-15213 C4 93 11000100 10010011 y -15213 C4 93 11000100 10010011 x = 0 Onluk Hex İkili 0 0 00 00 00000000 00000000 ~0-1 FF FF 11111111 11111111 ~0+1 0 00 00 00000000 00000000 18

Çarpma Amaç: w-bitlik x, y sayılarının çarpımını hesaplamak. signed veya unsigned Fakat, kesin, gerçek sonuç w bitten büyük olabilir. Unsigned: 2w bite kadar Sonuç aralığı: 0 x * y (2 w 1) 2 = 2 2w 2 w+1 + 1 2 Tümleyen minimum (negatif): 2w-1 bite kadar Sonuç aralığı: x * y ( 2 w 1 )*(2 w 1 1) = 2 2w 2 + 2 w 1 2 Tümleyen maksimum (pozitif): 2w bite kadar, fakat sadece (TMin w ) 2 için Sonuç aralığı: x * y ( 2 w 1 ) 2 = 2 2w 2 Bu nedenle, gerçek sonucu koruyabilmek için Word size in her bir çarpımda arttırılmasını gerektirir. Yazılımsal olarak gerçekleştirilir. Gerek duyulmuşsa örneğin, arbitrary precision (isteğe bağlı hassasiyet sağlayan) aritmetik paketleri kullanılabilir. 19

C de Unsigned Çarpma u u ve v operandları: w bitlik * v Gerçek Çarpım: 2*w bit u v w bitlik soldaki kısım ihmal edilir: w bit kalır. UMult w (u, v) Standart Çarpma Fonksiyonu Yüksek öncelikli w bit ihmal edilir. Modüler Aritmetiği Uygular UMult w (u, v)= u v mod 2 w 20

C de Signed (İşaretli) Çarpma u u ve v operandları: w bitlik * v Gerçek Çarpım : 2*w bit u v w bitlik soldaki kısım ihmal edilir: w bit kalır. TMult w (u, v) Standart Çarpma Fonksiyonu Yüksek öncelikli w bit ihmal edilir. Kalan w bitlik kısım işaretli olarak yorumlandığı için işaretsiz (unsigned) çarpmaya göre farklılık oluşabilir. Fakat bit düzeyinde işaretli ve işaretsiz çarpmada aynı işlemleri yürütülür. Bu nedenle ihmal edilen kısım haricinde kalan düşük öncelikli kısımdaki bitler aynıdır. 21

Kaydırma (Shift) ile 2 nin kuvveti çarpımı İşlem u << k, u * 2 k yı verir. signed ve unsigned ikisi için de geçerli Operandlar: w bitlik Gerçek çarpım: w+k bit u 2 k * u 2 k 0 0 1 0 0 0 0 0 0 k k bitlik soldaki kısım ihmal edilir: w bit kalır. UMult w (u, 2 k ) TMult w (u, 2 k ) Örnekler u << 3 == u * 8 (u << 5) (u << 3)== u * 24 Bir çok bilgisayar kaydırma işlemini çarpmadan daha hızlı yapar. Derleyici bu kodu otomatik olarak oluşturur. 0 0 0 22

Derlenmiş Çarpma Kodu C Fonksiyonu long mul12(long x) { return x*12; } Derlenmiş Aritmetik İşlemler leaq (%rax,%rax,2), %rax salq $2, %rax Açıklama t <- x+x*2 return t << 2; C derleyicisi sabit bir sayı ile çarpma durumunda kaydırma/toplama içeren kodu otomatik olarak oluşturur. 23

Aritmetik: Temel Kurallar Toplama: Unsigned/signed: Normal toplama yapılıp ardından kırpma (truncate) yapılır, bit düzeyinde aynı işlemler yapılır Çarpma: Unsigned/signed: Normal çarpma yapılıp ardından kırpma (truncate) yapılır, bit düzeyinde aynı işlemler yapılır 24

Kaydırma ile Unsigned 2 nin kuvvetine bölme Unsigned (işaretsiz) sayının 2 nin kuvvetine bölümü u >> k, u / 2 k i verir Lojik kaydırma kullanılır. k u İkili Nokta Operandlar: / 2 k 0 0 1 0 0 0 Bölüm: Sonuç: u / 2 k u / 2 k 0 0 0 0 0 0. Bölüm Hesaplanan Hex İkili x 15213 15213 3B 6D 00111011 01101101 x >> 1 7606.5 7606 1D B6 00011101 10110110 x >> 4 950.8125 950 03 B6 00000011 10110110 x >> 8 59.4257813 59 00 3B 00000000 00111011 25

Derlenmiş Unsigned Bölme Kodu C Fonksiyonu unsigned long udiv8 (unsigned long x) { return x/8; } Derlenmiş Aritmetic İşlemler shrq $3, %rax Açıklama # Lojik kaydırma return x >> 3; Unsigned bölmede lojik kaydırma kullanılır. Java kullanıcıları için Lojik kaydırma >>> ile gösterilir. 26

Kaydırma ile Signed 2 nin Kuvvetine Bölme Signed (işaretli) sayının 2 nin kuvvetine bölümü x >> k, x / 2 k yi verir. Aritmetik kaydırma kullanılır. u < 0 iken yanlış tarafa yuvarlama söz konusudur (Çözülecek). Operandlar: Bölüm: Sonuç: / x 2 k x / 2 k AşağıYuvarla(x / 2 k ) k 0 0 1 0 0 0 0. 0 İkili nokta Bölüm Hesaplanan Hex İkili y -15213-15213 C4 93 11000100 10010011 y >> 1-7606.5-7607 E2 49 11100010 01001001 y >> 4-950.8125-951 FC 49 11111100 01001001 y >> 8-59.4257813-60 FF C4 11111111 11000100 27

Düzeltilmiş 2 nin Kuvvetine Bölme Negatif sayının 2 nin kuvvetine bölümü İstenen: x / 2 k (0 a doğru yuvarlama) (x+2 k -1)/ 2 k şeklinde hesaplanır. C de: (x + (1<<k)-1) >> k Bölünen 0 a doğru yönlendirilmiş olur. Durum 1: Yuvarlama yok (Bölünenin en anlamsız k tane biti 0 ise) Bölünen: Bölen: u +2 k 1 / 0 0 1 0 0 0 2 k u / 2 k k 1 0 0 0 0 0 0 1 1 1 1 1 1 1 01 1 1 1. Biasing (yönlendirme) in etkisi yoktur. İkili nokta 1 1 1 28

Düzeltilmiş 2 nin Kuvvetine Bölme Durum 2: Yuvarlama Bölünen: k 1 x +2 k 1 0 0 0 1 1 1 1 1 arttırılmış olur İkili nokta Bölen: 2 k / x / 2 k 0 0 1 0 0 0 01 1 1 1. 1 arttırılmış olur Biasing (yönlendirme) en son sonuca 1 ekler. 29

Derlenmiş Signed (işaretli) Bölme Kodu C Fonksiyonu long idiv8(long x) { return x/8; } Derlenmiş Aritmetik İşlemler testq %rax, %rax js L4 L3: sarq $3, %rax ret L4: addq $7, %rax jmp L3 Açıklama int için aritmetik kaydırma kullanılır Java kullanıcıları için: Aritmetik kaydırma >> ile gösterilir. if x < 0 x += 7; # Aritmetik kaydırma return x >> 3; 30