Julia Tam Sayılar ve Kesirli Sayılır (Floating-Point Numbers)

Julia programlama dilinde tamsayılar (Integer) ve kesirli değerleri (Floating-Point Numbers), aritmetik ve hesaplamanın temel yapı taşlarıdır. Bu tür değerlerin yerleşik temsilleri sayısal ilkeller olarak adlandırılırken, koddaki anlık değerler olarak tam sayıların ve kesirli sayıların temsilleri sayısal değişmez değerler olarak bilinir. Örneğin, 1 tamsayı değişmez değerdir, 1.0 ise kesirli değişmez değerdir.

Julia çok çeşitli ilkel sayısal türler sağlar ve aritmetik ve bitsel işleçlerin tam bir tamamlayıcısı ve bunların üzerinde standart matematiksel işlevler tanımlamamızı sağlar. Bunlar, modern bilgisayarlarda yerel olarak desteklenen sayısal türler ve işlemlerle doğrudan eşleşir ve böylece Julia’nın hesaplama kaynaklarından tam olarak yararlanmasına olanak tanır.

Aşağıda Julia’nın ilkel sayısal türleri verilmiştir:

Integer (Tam sayı türleri)

TipSigned?Bit SayısıEn Küçük DeğerEn Büyük Değer
Int88-2^72^7 – 1
UInt8802^8 – 1
Int1616-2^152^15 – 1
UInt161602^16 – 1
Int3232-2^312^31 – 1
UInt323202^32 – 1
Int6464-2^632^63 – 1
UInt646402^64 – 1
Int128128-2^1272^127 – 1
UInt12812802^128 – 1
BoolN/A8false (0)true (1)

Floating-point (Kesirli Sayılar):

TypePrecisionNumber of bits
Float16half16
Float32single32
Float64double64

Ek olarak, karmaşık ve rasyonel sayılar bu ilkel sayısal türlerin üzerine inşa edilmiştir. Tüm sayısal türler, esnek, kullanıcı tarafından genişletilebilir tür promosyon sistemi sayesinde, açık bir dönüşüm olmadan doğal olarak birlikte çalışır.

Integer (Tam Sayılar)

julia> 1
Çıktı> 1

julia> 1234
Çıktı> 1234

Bir tamsayı değişmez değeri için varsayılan tür, hedef sistemin 32 bit mimariye mi yoksa 64 bit mimariye mi sahip olduğuna bağlıdır:

# 32-bit sistem:
julia> typeof(1)
Çıktı> Int32
# 64-bit sistem:
julia> typeof(1)
Çıktı> Int64

Julia dahili değişkeni Sys.WORD_SIZE, hedef sistemin 32 bit mi yoksa 64 bit mi olduğunu gösterir:

# 32-bit system:
julia> Sys.WORD_SIZE
Çıktı> 32

# 64-bit system:
julia> Sys.WORD_SIZE
Çıktı> 64

Julia ayrıca, sırasıyla sistemin işaretli ve işaretsiz yerel tam sayı türleri için takma adlar olan Int ve UInt türlerini de tanımlar:

# 32-bit sistem:
julia> Int
Çıktı> Int32
julia> UInt
Çıktı> UInt32

# 64-bit sistem:
julia> Int
Çıktı> Int64
julia> UInt
Çıktı> UInt64

Yalnızca 32 bit kullanılarak temsil edilemeyen, ancak 64 bit olarak temsil edilebilen daha büyük tam sayı değişmezleri, sistem türünden bağımsız olarak her zaman 64 bitlik tamsayılar oluşturur:

# 32-bit veya 64-bit sistem:
julia> typeof(3000000000)
Çıktı> Int64

İşaretsiz tamsayılar, 0x (sıfırx) öneki ve 0-9a-f onaltılık (16 tabanı) rakamları kullanılarak girilir ve çıkarılır (büyük harfli A-F rakamları da giriş için çalışır). İşaretsiz değerin boyutu, kullanılan onaltılık basamak sayısına göre belirlenir:

julia> x = 0x1
Çıktı> 0x01

julia> typeof(x)
Çıktı> UInt8

julia> x = 0x123
Çıktı> 0x0123

julia> typeof(x)
Çıktı> UInt16

julia> x = 0x1234567
Çıktı> 0x01234567

julia> typeof(x)
Çıktı> UInt32

julia> x = 0x123456789abcdef
Çıktı> 0x0123456789abcdef

julia> typeof(x)
Çıktı> UInt64

julia> x = 0x11112222333344445555666677778888
Çıktı> 0x11112222333344445555666677778888

julia> typeof(x)
Çıktı> UInt128

Bu davranış, tamsayı değerleri için işaretsiz onaltılık değişmez değerler kullanıldığında, genellikle bunların yalnızca bir tamsayı değeri yerine sabit bir sayısal bayt dizisini temsil etmek için kullanıldığı gözlemine dayanır. İkili ve sekizlik değişmez değerler de desteklenir:

julia> x = 0b10
Çıktı> 0x02

julia> typeof(x)
Çıktı> UInt8

julia> x = 0o010
Çıktı> 0x08

julia> typeof(x)
Çıktı> UInt8

julia> x = 0x00000000000000001111222233334444
Çıktı> 0x00000000000000001111222233334444

julia> typeof(x)
Çıktı> UInt128

Onaltılık değişmez değerlere gelince, ikili ve sekizlik değişmez değerler işaretsiz tamsayı türleri üretir. İkili veri öğesinin boyutu, değişmez değerin baş basamağı 0 (sıfır) değilse, gereken minimum boyuttur. Baştaki sıfırlar durumunda, boyut, aynı uzunlukta olan bir değişmez değer için gereken minimum boyut tarafından belirlenir, ancak baştaki rakam 1 (bir). Bu, kullanıcının boyutu kontrol etmesine izin verir. UInt128’de saklanamayan değerler bu tür değişmez değerler olarak yazılamaz.

İkili, sekizli ve onaltılık değişmez değerler, işaretsiz değişmezin hemen önünde – (tire) ile işaretlenebilir. İşaretsiz değişmezin yapacağı boyutta işaretsiz bir tamsayı üretirler ve ikisinin değerin tamamlayıcısıdır:

julia> -0x2
Çıktı> 0xfe

julia> -0x0002
Çıktı> 0xfffe

Tamsayılar gibi ilkel sayısal türlerin minimum ve maksimum gösterilebilir değerleri typemin ve typemax işlevleri tarafından verilir:

julia> (typemin(Int32), typemax(Int32))
Çıktı> (-2147483648, 2147483647)

#T için Typemin ve typemax değerleri
julia> for T in [Int8,Int16,Int32,Int64,Int128,UInt8,UInt16,UInt32,UInt64,UInt128]
println("$(lpad(T,7)): [$(typemin(T)),$(typemax(T))]")
end
Int8: [-128,127]
Int16: [-32768,32767]
Int32: [-2147483648,2147483647]
Int64: [-9223372036854775808,9223372036854775807]
Int128: [-170141183460469231731687303715884105728,170141183460469231731687303715884105727]
UInt8: [0,255]
UInt16: [0,65535]
UInt32: [0,4294967295]
UInt64: [0,18446744073709551615]
UInt128: [0,340282366920938463463374607431768211455]

Typemin ve typemax tarafından döndürülen değerler her zaman verilen argüman türündedir. (Yukarıdaki ifade, döngüler, Dizeler ve Enterpolasyon dahil olmak üzere henüz tanıtılmamış birkaç özelliği kullanır, ancak bazı mevcut programlama deneyimine sahip kullanıcılar için anlaşılması kolaydır.)

….Devamı Gelecek.

Bir önceki yazımız olan Julia Değişkenler başlıklı makalemizi de okumanızı öneririz.

Bir Cevap Yaz