C'de Hexadecimal toplama işlemi

Başlatan Extreme, 09 Ocak 2014, 17:50:44

Extreme

Merhaba Arkadaşlar,
{
unsigned long AdresSon;
unsigned long Adres1=0x200;
unsigned long Adres2;

Adres2=(z-1)*4;
         
AdresSon=Adres1+Adres2;
}

Burada z ye takılmayın z değişken z=4 olarak alabiliriz. Bu durumda AdresSon=0x20C olsun istiyorum ama daha farklı sayılar oluyor.
Kodun düzeltilmesinde yardımcı olursanız sevinirim

AdresSonu hexadecimal



Not: Aslında şu an kullandığım derleyici IAR ama genel c ile ilgili olduğunu düşünüyorum. O yüzden en çok takip edilen bölüme açtım konuyu

ercan_t

merhaba,

z değişken tipi önemlidir eğer pointer ise  Adres2=(*z-1)*4; olarak kullanman lazım.

onun dışında bir problem çıkmaz sanırsam

Extreme

Yardım için teşekkürler.

Pointer deyil
unsigned char z;

olarak tanımlanmış.
ben en basitinden

Adres2=0x((z-1)*4);

olarak denediğimde 3 hata veriyor.

invalid hexadecimal number
expression must have (pointer-to-) function type
a value of type "unsigned long*" cannot be assigned to an entity of type "unsigned long" hatalarını veriyor.


esensoy

#3
neden 0x yazmaya çalışıyorsunuz?
z=4 ise z-1 *4 =12 yani 0x0C olacaktır,
bunu da 0x200 ile toplarsanız 0x20C çıkar zaten

adres2=(z-1)*4;
adres1=0x200;
adresson=adres1+adres2;
En tehlikeli an "zafer" anıdır.

ercan_t

merhaba,
esensoy arkadaşın dediği gibi 0x yazılmaz;

#include <stdio.h>
int main()
{
unsigned long AdresSon;
unsigned long Adres1=0x200;
unsigned long Adres2;
unsigned char z;
z=4;
Adres2=(z-1)*4;
         
AdresSon=Adres1+Adres2;

printf("Decimal değeri:%d\r\n",AdresSon);
printf("HexDecimal değeri:%X\r\n",AdresSon);
return 0;
}


ciktisi :

Decimal değeri: 524
HexDecimal değeri: 20C




elektronart

nasıl daha farklı sayılar oluyor,
çıkan sonuçlardan örnekler verir misin, belki bize biraz ipucu verebilir.
Açık Elektronik

Extreme

#6
Yazılım Ticari ve çok uzun bir yazılım o yüzden yayınlayamam benim bazı yerleri düzenlemem gerekti sadece.

ben aynen ercan_t nin yaptığı gibi yaptım ama bana farklı adres gibi geldi açıkcası o değeri yazdırmamıştım yoğunluktan aklıma gelmedi.

farklı adres gibi düşünmemim nedeni şudur : flash adreslere bazı kayıtlar yapıyorum . elle girdiğimde 0x50C doğru ama ercan_t'nin de yazdığı gibi yazınca farklı veriler geldi benim kayıt etmediğim boş veriler . Ben pazartesi biraz daha kontroller yapıyım birde hexadecimal ve decimal olarak ercan_t'nin yazdığı gibi yazıyım. O zaman açıklamamı yaparım.

İlgilenen herkese teşekkürler.

Extreme

Kontrol ettim.

ercan_t ve benim yazdığım kod doğruymuş . bir hatadan dolayı görememişim.

Herkese iyi çalışmalar.