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ğerInt8
✓8-2^72^7 - 1UInt8
802^8 - 1Int16
✓16-2^152^15 - 1UInt16
1602^16 - 1Int32
✓32-2^312^31 - 1UInt32
3202^32 - 1Int64
✓64-2^632^63 - 1UInt64
6402^64 - 1Int128
✓128-2^1272^127 - 1UInt128
12802^128 - 1Bool
N/A8false
(0)true
(1)
Floating-point (Kesirli Sayılar):
TypePrecisionNumber of bitsFloat16
half16Float32
single32Float64
double64
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ı> 1julia> 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ı> 0x01julia> typeof(x)
Çıktı> UInt8julia> x = 0x123
Çıktı> 0x0123julia> typeof(x)
Çıktı> UInt16julia> x = 0x1234567
Çıktı> 0x01234567julia> typeof(x)
Çıktı> UInt32julia> x = 0x123456789abcdef
Çıktı> 0x0123456789abcdefjulia> typeof(x)
Çıktı> UInt64julia> x = 0x11112222333344445555666677778888
Çıktı> 0x11112222333344445555666677778888julia> 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ı> 0x02julia> typeof(x)
Çıktı> UInt8julia> x = 0o010
Çıktı> 0x08julia> typeof(x)
Çıktı> UInt8julia> x = 0x00000000000000001111222233334444
Çıktı> 0x00000000000000001111222233334444julia> 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ı> 0xfejulia> -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.)
Kaynak: KadirBlog.com