İngilizceFransızcaİspanyolca

OnWorks favicon'u

perlnumber - Bulutta Çevrimiçi

OnWorks ücretsiz barındırma sağlayıcısında perlnumber'ı Ubuntu Online, Fedora Online, Windows çevrimiçi öykünücüsü veya MAC OS çevrimiçi öykünücüsü üzerinden çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi öykünücüsü veya MAC OS çevrimiçi öykünücüsü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen komut perlnumber'dır.

Program:

ADI


perlnumber - Perl'de sayıların anlamı ve sayısal işlemler

SİNOPSİS


$n = 1234; # ondalık tam sayı
$n = 0b1110011; # ikili tamsayı
$n = 01234; # sekizlik tam sayı
$n = 0x1234; # onaltılık tam sayı
$n = 12.34e-56; # üstel gösterim
$n = "-12.34e56"; # dizi olarak belirtilen sayı
$n = "1234"; # dizi olarak belirtilen sayı

TANIM


Bu belge, Perl'in sayısal değerleri dahili olarak nasıl ele aldığını açıklar.

Perl'in operatör aşırı yükleme özelliği burada tamamen yok sayılır. Operatör aşırı yüklemesi
rasgele büyük üzerinde işlemler gibi sayılar için kullanıcı tanımlı davranışlara izin verir
tamsayılar, keyfi hassasiyette kayan nokta sayıları, "egzotik" üzerinde işlemler
modüler aritmetik veya p-adik aritmetik gibi sayılar vb. bkz. aşırı yük
detaylar.

saklama sayılar


Perl, sayıları dahili olarak 3 farklı şekilde temsil edebilir: yerel tamsayılar olarak, yerel olarak
kayan nokta sayıları ve ondalık diziler olarak. Ondalık dizgeler üstel olabilir
notasyon kısmı, "12.34e-56" da olduğu gibi. Yerli burada "C derleyicisi tarafından desteklenen bir biçim" anlamına gelir
hangi perl oluşturmak için kullanıldı".

"Yerel" terimi, yerel tamsayılardan bahsettiğimizde pek bir şey ifade etmez.
yerel kayan nokta sayıları söz konusu olduğunda yapar. Terimin tek anlamı
Tamsayılarda "yerel", maksimum ve minimum desteklenen doğru için sınırların olmasıdır.
integral miktarları 2'nin kuvvetlerine yakındır. Ancak, "yerli" kayan noktaların çoğu
temel kısıtlama: sadece göreli olarak bir değeri olan sayıları temsil edebilirler.
ikili kesre dönüştürüldüğünde "kısa" gösterim. Örneğin, 0.9 olamaz
0.9'un ikili kesri sonsuz olduğundan, yerel bir kayan nokta ile temsil edilir:

ikili0.1110011001100...

1100 dizisinin tekrar tekrar tekrarlanmasıyla. Bu sınırlamaya ek olarak,
ikili sayının üssü, değişken olarak temsil edildiğinde de kısıtlanır.
nokta numarası. Tipik donanımda, kayan nokta değerleri 53'e kadar sayıları saklayabilir.
ikili rakamlar ve -1024 ile 1024 arasında ikili üsler ile. Ondalık olarak
temsil bu, 16 ondalık basamağa ve aralığında ondalık üslere yakındır.
-304..304. Tüm bunların sonucu, Perl'in aşağıdaki gibi bir sayıyı depolayamamasıdır.
12345678901234567 bu tür mimarilerde kayıpsız bir kayan nokta sayısı olarak
bilgiler.

Benzer şekilde, ondalık diziler yalnızca sonlu ondalık sayıya sahip sayıları temsil edebilir.
genişleme. Dizeler olduğundan ve dolayısıyla keyfi uzunlukta olduğundan, bunun için pratik bir sınır yoktur.
bu sayılar için üs veya ondalık basamak sayısı. (Ama ne olduğumuzun farkına varın
sadece kuralların tartışılması hafızası bu numaralardan. saklayabileceğiniz gerçeği
bu tür "büyük" sayılar, operasyonlar bu numaraların üzerinde hepsini kullanacak
önemli rakamlar Ayrıntılar için "Sayısal işleçler ve sayısal dönüştürmeler" bölümüne bakın.)

Aslında yerel tamsayı biçiminde saklanan sayılar, imzalı
yerel formda veya imzasız yerel formda. Böylece saklanan Perl sayıları için sınırlar
yerel tamsayılar tipik olarak -2**31..2**32-1 olur ve
64-bit tamsayılar durumunda. Yine, bu Perl'in işlemleri yalnızca üzerinde yapabileceği anlamına gelmez.
bu aralıktaki tamsayılar: kayan noktada çok daha fazla tamsayı saklamak mümkündür
biçimi.

Özetlemek gerekirse, Perl sayısal değerleri yalnızca sonlu ondalık basamağa sahip sayıları saklayabilir.
genişletme veya "kısa" bir ikili genişletme.

Sayısal operatörler ve sayısal dönüşümler


Daha önce belirtildiği gibi, Perl bir sayıyı üç biçimden herhangi birinde saklayabilir, ancak çoğu
operatörler genellikle bu biçimlerden yalnızca birini anlar. Sayısal bir değer iletildiğinde
böyle bir operatöre bir argüman olarak, operatör tarafından anlaşılan formata dönüştürülecektir.
operatörü.

Bu tür altı dönüşüm mümkündür:

yerel tamsayı --> yerel kayan nokta (*)
yerel tamsayı --> ondalık dize
yerel kayan nokta --> yerel tamsayı (*)
yerel kayan nokta --> ondalık dize (*)
ondalık dize --> yerel tam sayı
ondalık dize --> yerel kayan nokta (*)

Bu dönüşümler aşağıdaki genel kurallara tabidir:

· Kaynak numarası hedef formda gösterilebiliyorsa, bu temsil
Kullanılmış.

· Kaynak numarası, hedef formda gösterilen sınırların dışındaysa, bir
en yakın sınırın temsili kullanılır. (Kayıp of bilgi)

· Kaynak numarası, hedef formda gösterilebilen iki sayı arasındaysa, bir
Bu sayılardan birinin temsili kullanılır. (Kayıp of bilgi)

· "Yerel kayan nokta --> yerel tamsayı" dönüşümlerinde sonucun büyüklüğü
kaynağın büyüklüğünden küçük veya ona eşittir. ("yuvarlama için sıfır".)

· Eğer "ondalık dizge --> yerel tamsayı" dönüştürme işlemi kayıp olmadan yapılamazsa
bilgi, sonuç "decimal_string --> dönüştürme sırası ile uyumludur
native_floating_point --> native_integer". Özellikle, yuvarlama çok taraflıdır
"0" gibi bir sayının yuvarlanma şansı olsa da 0.99999999999999999999'a
1.

KISITLAMA: Yukarıda "(*)" ile işaretlenen dönüşümler, C tarafından gerçekleştirilen adımları içerir.
derleyici. Özellikle kullanılan derleyicinin bugları/özellikleri bazılarının kırılmasına neden olabilir.
yukarıdaki kurallardan.

Tatlandırıcılar of Perl sayısal operasyonlar


Sayısal bir argüman alan Perl işlemleri, bu argümanı dört farklı argümandan birinde ele alır.
yollar: onu tamsayı/kayan/dize biçimlerinden birine zorlayabilirler veya davranabilirler
işlenenin biçimine bağlı olarak farklılık gösterir. Sayısal bir değeri a'ya zorlamak
belirli biçim, değerde saklanan sayıyı değiştirmez.

Tamsayı biçiminde bir argümana ihtiyaç duyan tüm operatörler, argümanı aşağıdaki gibi ele alır.
modüler aritmetik, örneğin 2 bit mimaride "mod 32**32". "sprintf "%u", -1"
bu nedenle "sprintf "%u", ~0" ile aynı sonucu sağlar.

Aritmetik operatörler
"+" "-" "*" "/" "%" "==" "!=" ">" "<" ">=" "<=" ikili operatörleri ve birli
"-" "abs" ve "--" operatörleri, bağımsız değişkenleri tam sayılara dönüştürmeye çalışır. İkisi de olursa
hassasiyet kaybı olmadan dönüşümler mümkündür ve işlem gerçekleştirilebilir
kesinlik kaybı olmadan tamsayı sonucu kullanılır. Aksi takdirde argümanlar
kayan nokta biçimine dönüştürülür ve kayan nokta sonucu kullanılır. önbelleğe alma
dönüşümlerin sayısı (yukarıda açıklandığı gibi), tamsayı dönüşümünün atmadığı anlamına gelir
kayan nokta sayılarında kesirli kısımlar.

++ "++", yukarıdaki diğer işleçler gibi davranır, ancak aşağıdakiyle eşleşen bir dizedir:
"/^[a-zA-Z]*[0-9]*\z/" biçiminde perlop'ta açıklanan dize artışı kullanılır.

"Tamsayı kullan" sırasındaki aritmetik operatörler
"tamsayı kullan" kapsamlarında; yürürlükte, yukarıda listelenen operatörlerin neredeyse tamamı
argümanlarını tamsayı biçimine zorlayın ve bir tamsayı sonucu döndürün. NS
istisnalar, "kesin", "++" ve "--", davranışlarını "integer kullan" ile değiştirmeyin;

Diğer matematiksel operatörler
"**", "sin" ve "exp" gibi operatörler, bağımsız değişkenleri kayan nokta biçimine zorlar.

Bitsel operatörler
Bağımsız değişkenler, dizeler değilse tamsayı biçimine zorlanır.

"Tamsayı kullan" sırasında bit düzeyinde operatörler
argümanları tamsayı biçimine zorlar. Ayrıca kaydırma işlemleri dahili olarak imzalı kullanır
varsayılan işaretsiz yerine tamsayılar.

Bir tamsayı bekleyen operatörler
argümanı tamsayı biçimine zorlayın. Bu, üçüncü ve
örneğin "sysread"in dördüncü argümanları.

Bir dize bekleyen operatörler
argümanı dize biçimine zorlayın. Örneğin, bu "printf" için geçerlidir.
"%s", $değer".

Bir argümanı belirli bir forma zorlamak saklanan sayıyı değiştirmese de, Perl
bu tür dönüşümlerin sonucunu hatırlar. Özellikle, bu tür ilk dönüşüm olsa da
zaman alıcı olabilir, tekrarlanan işlemlerin dönüştürmeyi yeniden yapması gerekmeyecektir.

onworks.net hizmetlerini kullanarak perlnumber'ı çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad