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)
Tip | Signed? | Bit Sayısı | En Küçük Değer | En Büyük Değer |
---|---|---|---|---|
Int8 | ✓ | 8 | -2^7 | 2^7 – 1 |
UInt8 | 8 | 0 | 2^8 – 1 | |
Int16 | ✓ | 16 | -2^15 | 2^15 – 1 |
UInt16 | 16 | 0 | 2^16 – 1 | |
Int32 | ✓ | 32 | -2^31 | 2^31 – 1 |
UInt32 | 32 | 0 | 2^32 – 1 | |
Int64 | ✓ | 64 | -2^63 | 2^63 – 1 |
UInt64 | 64 | 0 | 2^64 – 1 | |
Int128 | ✓ | 128 | -2^127 | 2^127 – 1 |
UInt128 | 128 | 0 | 2^128 – 1 | |
Bool | N/A | 8 | false (0) | true (1) |
Floating-point (Kesirli Sayılar):
Type | Precision | Number of bits |
---|---|---|
Float16 | half | 16 |
Float32 | single | 32 |
Float64 | double | 64 |
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.