BİLGİSAYAR SAYILARININ C PROGRAMLAMA DİLİNE UYGUN GENİŞLETİLMESİ *

Benzer belgeler
Bilgisayarlara ve Programlamaya Giriş (COMPE 101) Ders Detayları

Bilgisayarlara ve Programlamaya Giriş (COMPE 101) Ders Detayları

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

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

Bilgisayar Programlama II (COMPE 114) Ders Detayları

Floating Point (Kayan Noktalı Sayılar)

Bilgisayar Programlama I (COMPE 113) Ders Detayları

Dr. Fatih AY Tel: fatihay@fatihay.net

Bilgisayarlara ve Programlamaya Giriş (COMPE 101) Ders Detayları

C ile Programlama (COMPE 112) Ders Detayları

Bilgisayar Programlama I (COMPE 113) Ders Detayları

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS KİTAPLARI LİSTESİ

EĞİTİM-ÖĞRETİM YILI MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ (İNGİLİZCE) BÖLÜMÜ DERS PROGRAMINDA YAPILAN DEĞİŞİKLİKLER

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

Unlike analytical solutions, numerical methods have an error range. In addition to this

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

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

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

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

Dijital Sinyal İşleme (COMPE 463) Ders Detayları

DOKUZ EYLUL UNIVERSITY FACULTY OF ENGINEERING OFFICE OF THE DEAN COURSE / MODULE / BLOCK DETAILS ACADEMIC YEAR / SEMESTER

BLM 4811 MESLEKİ TERMİNOLOJİ II Salı , D-109 Dr. Göksel Biricik

Leyla Bugay Doktora Nisan, 2011

BLM1011 Bilgisayar Bilimlerine Giriş I

Kısmi Diferansiyel Denklemler için Sonlu Fark Metodları (MATH524) Ders Detayları

Biçem Belirteçleri (Format Specifiers)

YZM 2116 Veri Yapıları

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ EĞİTİM ÖĞRETİM YILI DERS KATALOĞU

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

Bilgisayarlara ve Programlamaya Giriş (COMPE 101) Ders Detayları

T.C. İZMİR KÂTİP ÇELEBİ ÜNİVERSİTESİ BİLİMSEL ARAŞTIRMA PROJELERİ KOORDİNASYON BİRİMİ

Dersi Alan Dersi Veren Dersin Optik Kod Dersin Adı Saat Öğr. Grubu Öğretim Üyesi Yeri

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

ÖZGEÇMİŞ. 1. Adı Soyadı: Bahaddin SİNSOYSAL 2. Doğum Tarihi: Ünvanı: Doç. Dr. 4. Öğrenim Durumu:

Bilgisayar Mühendisliği. Bilgisayar Mühendisliğine Giriş 1

T. C. E. Ü. FEN FAKÜLTESİ MATEMATİK BÖLÜMÜ Öğretim Yılı Güz Dönemi Haftalık Ders Programı

Proje Adı: Sonlu Bir Aritmetik Dizinin Terimlerinin Kuvvetleri Toplamının İndirgeme Bağıntısıyla Bulunması.

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

1. YARIYIL / SEMESTER 1

Sigma 2006/3 Araştırma Makalesi / Research Article A SOLUTION PROPOSAL FOR INTERVAL SOLID TRANSPORTATION PROBLEM

ve Sonrası Girişli Öğrenciler için Uygulanacak Ders Program

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

Bilgisayar Mühendisliği Bölümü Lisans Ders Programı / Computer Engineering Undergraduate Curriculum

Kimya Mühendisliğinde Uygulamalı Matematik

int printf (const char *format [, argument,...]);

MATEMATİK BÖLÜMÜ BÖLÜM KODU:3201

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Fizik Bölümü Öğretim Planı

ÖZGEÇMİŞ. 1. Adı Soyadı: Bahaddin SİNSOYSAL 2. Doğum Tarihi: Ünvanı: Doç. Dr. 4. Öğrenim Durumu:

Güç Sistemleri Analizi (EE 451) Ders Detayları

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

Yazılım Mühendisliğinde Biçimsel Yöntemler (SE 562) Ders Detayları

Nesne Tabanlı Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Öğretim Yılı Güz Dönemi Final Sınav Programı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

SAYI SİSTEMLERİ. 1. Sayı Sistemleri. Sayı Sistemlerinde Rakamlar

ADNAN MENDERES ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ MATEMATİK ANABİLİM DALI MATEMATİK PROGRAMI DERS LİSTESİ

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

ATILIM UNIVERSITY Department of Computer Engineering

Bilgisayar Mühendisliği Bölümü Lisans Ders Programı / Computer Engineering Undergraduate Curriculum

C#(Sharp) Programlama Dili

T. C. E. Ü. FEN FAKÜLTESİ MATEMATİK BÖLÜMÜ Öğretim Yılı Güz Dönemi Haftalık Ders Programı

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

KIRIKKALE ÜNİVERSİTESİ FEN-EDEBIYAT FAKÜLTESİ İSTATİSTİK BÖLÜMÜ LİSANS PROGRAMI

İndirgenme Boyutu Üç Olan Fibonacci Simetrik Sayısal Yarıgruplarının Bir Sınıfı

EGE ÜNİVERSİTESİ FEN FAKÜLTESİ MATEMATİK BÖLÜMÜ İ.Ö ÖĞRETİM YILI BAHAR YARIYILI BÜTÜNLEME PROGRAMI

T. C. E. Ü. FEN FAKÜLTESİ MATEMATİK BÖLÜMÜ Öğretim Yılı Bahar Dönemi Haftalık Ders Programı İkinci Öğretim

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MÜFREDAT DERS LİSTESİ

Sınav tarihi : Süre : 60 dak.

KAHRAMANMARAŞ SÜTÇÜ İMAM ÜNİVERSİTESİ EĞİTİM ÖĞRETİM YILI FEN-EDEBİYAT FAKÜLTESİ MATEMATİK BÖLÜMÜ BİRİNCİ VE İKİNCİ ÖĞRETİM DERSLERİ

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

BLM 111 Algoritma ve Programlama I Güz 2018

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

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Matematik ile ilgili temel kavramları açıklayabilme.

EGE ÜNİVERSİTESİ FEN FAKÜLTESİ MATEMATİK BÖLÜMÜ İ.Ö ÖĞRETİM YILI BAHAR YARIYILI ARASINAV PROGRAMI

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

Sayısal Yöntemler (COMPE 350) Ders Detayları

Erciyes Üniversitesi, Mühendislik Fakültesi, İnşaat Mühendisliği Bölümü İNŞ-201 Nümerik Analiz Dersi Final Sınavı

Bilgisayara ve Bilişim Sistemlerine Giriş (COMPE 105) Ders Detayları

Nesne Tabanlı Programlama

13.Konu Reel sayılar

Lambda, Map, Filter ve Dizi Tamamlama

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

1 BEÜ./ÖĞR.İŞL FEN-EDEBİYAT FAKÜLTESİ FİZİK BÖLÜMÜ BÖLÜM KODU : 307 (TÜRKÇE PROGRAMI) HAZIRLIK SINIFI 01.

MAK 210 SAYISAL ANALİZ

SORU 1: En az iki elemana sahip bir X kümesi ile bunun P (X) kuvvet. kümesi veriliyor. P (X) üzerinde 0 ; A = 1 ; A

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

ALGORİTMA VE PROGRAMLAMA I

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

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Giriş.

TEMEL KAVRAMLAR. SAYI KÜMELERİ 1. Doğal Sayılar

Bilgisayar Bilimlerine Giriş (MCS115) Ders Detayları

Girdi Çıktı İşlemleri

28 C j -Z j /2 0

3.2. DP Modellerinin Simpleks Yöntem ile Çözümü Primal Simpleks Yöntem

Biçimsel Diller ve Özdevinirler (COMPE 326) Ders Detayları

Transkript:

BİLGİSAYAR SAYILARININ C PROGRAMLAMA DİLİNE UYGUN GENİŞLETİLMESİ * Ali Osman ÇIBIKDİKEN 1 Kemal AYDIN 2 1 Selçuk Üniversitesi, Kadınhanı Faik İçil MYO, Bilgisayar Programcılığı, Konya 2 Selçuk Üniversitesi, Fen Fakültesi, Matematik Bölümü, Konya Özet Günümüzde fen ve mühendislik alanındaki problemler sayısal olarak bilgisayarlarda çözülmektedir. Problemin çözümünde kullanılan klasik matematiksel yöntemler, bilgisayarda her zaman istenilen çözümü veremeyebilir. Bunun nedenlerinden birisi, bilgisayarların reel sayılar yerine sonlu kümelerle çalışmasıdır. Bilgisayar sayılarının kümesi (Format), yazılım ve donanım açısından standartlara bağlanmıştır. C dilinde reel sayılarla çalışmak için float, double ve long double olmak üzere 3 çeşit bilgisayar sayı kümesi kullanılmaktadır. Bu çalışmada C dilindeki bu 3 çeşit kümeye karşılık gelen Format kümeleri incelenmiştir. Fakat ucuz Formatın genişletilmesi, reel sayıların ayrık kuvvetle gösterilmesi yöntemiyle yeni Format ları verir. Elde edilen bu Formatların karakteristikleri çalışmamızda tablolar şeklinde verilmiştir. Anahtar kelimeler: Bilimsel hesaplama, bilgisayar sayıları, programlama dili. * Bu çalışmadaki sonuçlar Elemanter Matris İşlemlerinde Hata Tahmini isimli yüksek lisans tezinden derlenmiştir. 262

ON EXTEND OF COMPUTER NUMBERS IN C PROGRAMMING LANGUAGE Abstract Nowadays, problems in science and engineering are generally computed on computers by numerical methods. Sometimes the classical methods that are used on solving problems can not give the correct solutions. Because computers use finite computer numbers instead of real numbers. Computer numbers types have standarts for hardware and software. C programming language can use 3 computer number types which are float, double and long double to work with real numbers. In this study, we examine this 3 number types in C programming language. But extending cheap Format obtains new Formats with using separate exponent method. These new Formats has been showed by tables. Keywords: Scientific computing, computer numbers, programming language. 1. Giriş Bilimsel hesaplamalar sırasında probleme ait veri girişi, işlemler ve elde edilen sonuçlar, bilgisayar sayıları kümesinin elemanları ile yapılmaktadır. Bilgisayar sayıları kümesi; sonlu büyüklükte, en büyük ve en küçük elemanı olan, elemanları arasında belli aralıkların bulunduğu sayılardan oluşan bir kümedir. Bilgisayar sayıları rasyonel sayıların sonlu bir alt kümesi ile çalışmaktadır. (γ, p, p +, k) parametrelerine bağlı olarak, F + = F + (γ, p, p +, k) = { u u = γ p(u) m(u) } 263

ve γ sayı sisteminin tabanını (genelde 2, 8, 10 veya 16 kullanılmaktadır) göstermek üzere, F= {0} F + F - ; F - = - F + (1) şeklinde tanımlanan kümeye bilgisayar sayıları kümesi veya Format kümesi denilmektedir [1, 3, 7, 9, 10, 11]. Burada p Z, k, p + Z + olmak üzere, p p(u) p +, p(u) Z ve m1 m2 m m(u) = + +... + k ; m 2 k j Z, 0 m j γ 1, j = 1, 2,, k (m 1 0) (2) γ γ γ şeklinde tanımlıdır [1, 5, 9]. F kümesinin sonlu sayıda rasyonel sayılardan oluştuğu, yani F sonlu ve F Q olduğu açıktır. Ayrıca burada, p(u) : kuvveti m(u) : mantisi ( γ 1 m(u) < 1) göstermektedir. q p, p + q +, k < s ise, F(γ, p, p +, k) F(γ, q, q +, s) dir. F(γ, p, p +, k) formatına daha ince format, F(γ, q, q +, s) formatına dahakaba format denir [1]. p(u) değerinin negatif olmaması 0 a yakın sayılarla çalışmamızı engellemektedir. Çünkü 0 a yakın sayılarla çalışabilmek için kuvvet değerinin negatif olması gerekmektedir. Ayrı bir hafızada sakladığımız sayıyı p(u) değerinden çıkartarak negatif değer elde edilebilir. Saklanılan bu sayı q ise p(u); p q p(u) p + q arasındaki tam sayıları alacaktır. 264

2. Bilgisayar Sayıları Kümesi Standartı Format kümesinde γ = 2 olarak seçilirse, bilgisayarların yazılım ve donanımlarında standart oluşturan IEEE Standartı karşımıza gelir. IEEE Standartı tek (single) hassasiyet ve çift (double) hassasiyet olmak üzere iki kısımdan oluşmaktadır [2, 6]. IEEE Standartında bilgisayar sayıları Tablo 1 de gösterilmektedir. [2, 6, 11]. Tablo 1. IEEE Standartına göre bilgisayar sayılarının gösterimi Tek Hassasiyet Çift Hassasiyet Bilgisayar sayısı (-1) s 1.m 2 e-127 (-1) s 1.m 2 e-1023 IEEE Standartının tek hassasiyet ve çift hassasiyet durumuna göre bit dağılımı Tablo 2. de gösterilmiştir [2]. Tablo 2. IEEE Standartına göre bitlerin dağılımı. Tek Hassasiyet Çift Hassasiyet s (işaret biti) 1 tane 1 tane e (kuvvet biti) 8 tane 11 tane m (mantis biti) 23 tane 53 tane Mantisin ilk elemanı 0 dan farklı bir eleman olması gerektiği (2) de verilmişti. Buna göre IEEE standartında mantis için ayrılan bitin değeri 0 olamaz. Bit olarak işlem yapıldığına göre bu değer 0 değilse 1 olmalıdır. Mantis için ayrılan alandaki ilk eleman daima 1 olacağından, hafızada ayrıca yer kaplamaması için buna gizli bit (hidden bit) denilmektedir [2, 3, 6]. 265

Bilgisayar yazılımları hazırlanırken reel sayıların kullanımı için değişken tiplerinin tanımlanması gerekmektedir. Böylece bilgisayarın kullanabileceği sayılar belirlenir. Sonlu sayıda olan bu sayılar, gerekli değişken tipine atanmaz ise sonuçlar hatalı çıkabilir. Bu aslında kullanılacak Format kümelerinin tanıtılmasından başka bir şey değildir. Tablo 3 de C programlama dilinde reel sayıların saklanması için kullanılabilecek değişken tipleri ve özellikleri verilmiştir [8]. Tablo 3 de m değerlerine gizli bit dahil edilmiştir. Tablo 3. C programlama dilinde kullanılan değişken tipleri. Değişken tipi Bellek alanı q Bitlerin kullanımı s e m float 4 byte 127 1 8 24 double 8 byte 1023 1 11 53 long double 10 byte 16838 1 15 65 C programlama dilinde kullanılan değişken tipleri, format kümeleri olarak Tablo 4 de verilmiştir. Tablo 4. C dilinde kullanılan değişkenlere ait format kümeleri. Değişken tipi γ p - p + k Format kümeleri float 2-128 127 24 F f (2,-128,127,24) double 2-1024 1023 53 F d (2,-1024,1023,53) long double 2-16384 16383 65 F lgd (2,-16384,16383,65) Tablo 4 den de açıkça görüleceği gibi F f F d F lgd dir. 266

3. C Programlama Dilinde Bilgisayar Sayı Kümelerinin Genişletilmesi Bir format kümesinde sayının kuvvet değeri, onun için ayrılan alanın büyüklüğüne ve kaydırma değeri ile sınırlıdır. Bu sınırı genişletmek için ayrık kuvvet yöntemi yardımcı olmaktadır. Bu sebeple özet kısmında ucuz kelimesi ile standartlar kullanılarak, ek bir maliyet getirmeden ayrık kuvvet ile daha ince format kümeleri elde edilebileceği kastedilmiştir. Tablo 5. C programlama dilinde tam sayı için kullanılan değişken tipleri. Değişken tipi Bellek alanı Alt sınır Üst sınır unsigned char 1 bye q uc- = 0 q uc+ = 255 unsigned int 2 byte q us- = 0 q us+ = 65535 char signed char 1 byte q c- = -128 q c+ = 127 int short int signed int 2 byte q i- = -32768 q i+ = 32767 signed short int long long int 4 byte q l- = -2147483648 q l+ = 2147483647 signed long int unsigned long int 4 byte q ul- = 0 q ul+ = 4294967295 Ayrık kuvvet yöntemi, p ve p + sayılarının standart olarak verilenden daha büyük kullanarak genişletilmesiyle sağlanmaktadır. Bu genişletmede, p ve p + için tam sayı 267

saklanacak alanlar yeterli olacaktır. Tablo 5 de C programlama dilinde tam sayı saklamak için kullanılan değişkenler gösterilmiştir [8]. Böylece bu değişkenlerdeki değerler p ve p + için kullanılabilecektir. Tablo 5 te verilen, q c-, q c+, q s-, q s+, q l-, q l+, değerlerini kuvvet değerleri için, mantisa değerlerini standart değerler kullanmak üzere yeni format kümeleri Tablo 6 da tanıtılmıştır [4]. Tablo 6. C programlama dilinde genişletilerek elde edilen format kümeleri Kuvvet Mantisa float double long double char F cf F cd F cl int F if F id F il long F lf F ld F ll Böylece kuvvet değerleri genişletilerek C dilinde standart olarak verilmiş olan kümelerin dışında 9 farklı Format kümesi elde etmiş oluruz. Bu kümeler; F cf = F(2, q c-, q c+, 24) = F(2, -128, 127, 24) F if = F(2, q s-, q s+, 24) = F(2, -32768, 32767, 24) F lf = F(2, q l-, q l+, 24) = F(2,-2147483648, 2147483647, 24) F cd = F(2, q c-, q c+, 53) = F(2, -128, 127, 53) F id = F(2, q s-, q s+, 53) = F(2, -32768, 32767, 53) F ld = F(2, q l-, q l+, 53) = F(2, -2147483648, 2147483647, 53) F cl = F(2, q c-, q c+, 65) = F(2, -128, 127, 65) F il = F(2, q s-, q s+, 65) = F(2, -32768, 32767, 65) F ll = F(2, q l-, q l+, 65) = F(2, -2147483648, 2147483647, 65) olarak bulunur [4]. Burada, 268

F cf = F f F cd F d F cl F l olduğu görülmektedir. O halde F cf, F cd, F cl format kümelerini elde etmek bize bir şey kazandırmaz. Dolayısıyla F if, F lf, F id, F ld, F il, F ll kümelerinin format parametre değerleri Tablo 7 de gösterilmiştir. Tablo 7. C programlama dilinde genişletilmiş F if, F lf, F id, F ld, F il, F ll kümelerinin Format parametre değerleri. Format kümesi γ p - p + k F if 2-32768 32767 24 F lf 2-2147483648 2147483647 24 F id 2-32768 32767 53 F ld 2-2147483648 2147483647 53 F il 2-32768 32767 65 F ll 2-2147483648 2147483647 65 Tablo 7 den görüldüğü gibi, F if F lf F id F ld F il F ll olduğu açıktır [4]. 4. Sonuç Bilgisayar sayıları kümesi, C programlama dilinde standarta bağlı kalınarak, bilgisayar kapasitesine göre genişletilmiştir. Bu genişletme ile elde edilen Tablo 7 deki 269

p - değerleri mutlak değerce büyüdükçe, 0 a yakın bilgisayar sayılarının artması sonucu bilgisayar sayıları kümesi daha da inceldiğinden, hesaplamaların yüksek hassasiyetle yapılabilmesine imkan sağlanmıştır. Genişletmeye yönelik algoritmalar hesaplama algoritmasına eklenerek daha hassas hesaplamalar yapan yazılımlar üretmek mümkün olabilecektir. Kaynaklar [1] Akın Ö ve Bulgak H, Lineer fark denklemleri ve kararlılık teorisi, Selçuk Üniversitesi Uygulamalı Matematik Araştırma Merkezi Yayınları No.2, Konya, 1998. [2] ANSI/IEEE, IEEE Standard for binary floating point arithmetic, Std 754 1985, New York, 1985. [3] Behrooz P, Computer architecture: From microprocessors to supercomputers, Oxford University Press, 2005. [4] Çıbıkdiken A.O., Elemanter matris işlemlerinde hata tahmini, Selçuk Üniversitesi Fen Bilimleri Enstitüsü Uygulamalı Matematik Anabilim Dalı Yüksek Lisans Tezi, Konya, 2002. [5] Godunov S. K., Antonov A. G., Kiriluk O. P. and Kostin V. I., Guaranteed accuracy in mathematical computations, Englewood Cliffs, N. J., Prentice- Hall, 1993. [6] Goldberg D., What every computer scientist should know about floating-point arithmetic, Association for Computing Machinery, 1991. [7] Kahan W., Lecture notes on the status of IEEE standart 754 for binary floating point arithmetic, University of California, 1997. [8] Kernighan B.W, Ritchie D.M, C Programming Language, 2nd Edition, Prentice Hall, Software Series, 1988. 270

[9] Kulisch U.W, Mathematical foundation of computer arithmetic, IEEE Transactions of Computers, Vol. C-26, No.7, 1977. [10] Kulisch U.W and Miranker W.L., Computer arithmetic in theory and practice, Academi Press Inc., 1981. [11] Overton M.L., Numerical computing with IEEE floating point arithmetic, SIAM, 2001. 271