PROTON İLE SAYI TİPLERİ

Başlatan oyhan, 06 Aralık 2004, 01:39:04

oyhan

Arkadaşlar Selam
PDF dökümanda proton için aşağıdaki sayı tiplerini desteklediği belirtiliyor.
Peki diyelimki farklı bir sayı tipine ihtiyacımız var c deki gibi
unsigninteger,signinteger,long,unsignedlong vs...
Yani uzun lafın kısası Basic içinde kendimize özel 8 - 16  - 24  - 32  bitlik c dekine benzer ihtiyaca göre farklı  sayı sistemleri geliştirebilirmiyiz. Bu konuda örnek varmı?
Saygılarımla....


FLOAT:type variables may theoretically hold a value from -1e37 to +1e38, but because of the 32-bit architecture of the compiler, a maximum and minimum value should be thought of as -2147483646.999 to +2147483646.999 making this the most accurate of the variable family types. However, more so than DWORD types, this comes at a price as FLOAT calculations and comparisons will use more code space within the PICmicrotm. Use this type of variable sparingly, and only when
strictly necessary. Smaller floating point values offer more accuracy.

DWORD: type variables may hold a value from -2147483648 to +2147483647 making this the largest of the variable family types. This comes at a price however, as DWORD calculations and comparisons will use more code space within the PICmicrotm. Use this type of variable sparingly, and only when necessary.

WORD: type variables may hold a value from 0 to 65535, which is usually large enough for most applications. It still uses more memory, but not nearly as much as a DWORD type.

BYTE: type variables may hold a value for 0 to 255, and are the usual work horses of most programs. Code produced for BYTE sized variables is very low compared to WORD, FLOAT, or DWORD types, and should be chosen if the program requires faster, or more efficient operation.

BIT: type variables may hold a 0 or a 1. These are created 8 at a time, therefore declaring a single BIT type variable in a program will not save RAM space, but it will save code space, as BIT type variables produce the most efficient use of code for comparisons etc.
BİRLİKTEN KUVVET DOĞAR:

ftsahin

Dikkat ederseniz Signed tipi değişkenler Unsigned tiplerin baştaki 1 bitinin çıkarılmış halidir. Yani 2147483648 sayısı 2^31'e eşittir.Aslında registerleri tam kullanırsak 32 bitlik bir sayımız olması lazımdı ama baştaki 1 bit işaret olarak kullanıldığı için sayı değeri yarıya düşürülür.Baştaki bit işaret biti olarak kullanılır.1 ise (+), 0 ise (-) gibi. Bunu siz de kullanabilirsiniz. Mesela word tipi bir değişkenin 1. bitini + ve - olarak kullanmak için önce o değişkenle yapılan işlemleri 32767 ile sınırlarsınız. Sonra sayı + ise 32768 eklersiniz. - ise 0 eklersiniz. Bu durumda sayının son 15 biti hiç değişmez. Sadece baştaki 1 bit değişir. Bu da o sayının + veya - olduğunu gösterir. Elimizdeki sayının +'mı -'mi olduğunu anlamak için sayının 32768'den büyük olup olmadığını kontrol etmemiz yeterlidir.Bu yöntemle tüm değişkenlerde +- işaretleri kullanabilirsiniz.Umarım anlatabilmişimdir.

oyhan

Öncelikle Cevabınız için teşekkürler
Ben aslında yüksek değerlikte bir sayı oluşturmak istiyorum. Float gibi
ama noktadan sonraki değerin daha fazla olduğu ve basamak değerinin  (noktadan önceki) yüksek olduğu bir sayı mesela 64 bitlik bir sayı
Diyelimki 64 bitlik bu sayı sadece + olsun 64 biti alıpda yan yana rakamlar haline getirmek yani binay to decimale çevirmek sonra bunları tekrar birtakım aritmatiksel işlemlerden geçirdikten sonra tekrar kendi registery sine yerleşimi gibi vs..
konular için bun soruyu sormuştum.
C de hazır her tür sayı yapısı var aslında ama c ye geçmeye zamanım yok. C biliyorum ama nekadar zaman alacak nerden başlayacağım vs..
Konu bu görüldüğü üzre kafamda karışık...
Saygılarımla...
BİRLİKTEN KUVVET DOĞAR: