Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: cihanogluts - 10 Mart 2017, 21:12:31

Başlık: CCS çarpma işlemi
Gönderen: cihanogluts - 10 Mart 2017, 21:12:31
S.a beyler. Şöyle bir Sorunla karşılaştım.
int8 hiz=100;
int16 ay=0;

ay=50000-hiz*140;
dediğimde çarpma sonucu yanlış çıkıyor.
hiz değişkeninide int16 yapınca sonuç doğru oluyor.
ccs de int8 ile int16  değişkenleri çarpılmıyormu ?
Başlık: Ynt: CCS çarpma işlemi
Gönderen: Murat Mert - 10 Mart 2017, 21:40:50

unsigned int16 ay=0; /// yap sıkıntı olursa
ay=(unsigned int16)(50000-(hiz*140));
Başlık: Ynt: CCS çarpma işlemi
Gönderen: vitruvius - 10 Mart 2017, 21:48:01
Buradaki sıkıntı şu. Çarpma işlemi önce yapılıp sonra atama işlemi yapılır. Yani yazdığın kod aslında şu şekilde çalışıyor:

int8 hiz=100;
int8 vit =50000-hiz*140;

int16 ay = vit


CCS C'de int8 -128 ile 127 arasında değer alıyor. Sen o çarpma işlemini yaptığında da haliyle overflow oluşuyor. Çarpma işlemini yaparken cast işlemi yapmalısın.
Başlık: Ynt: CCS çarpma işlemi
Gönderen: cihanogluts - 10 Mart 2017, 22:08:36
Teşekkürler sorunum çözüldü :)
Başlık: Ynt: CCS çarpma işlemi
Gönderen: Murat Mert - 11 Mart 2017, 11:26:43
Hadi bakalım kolay gelsin  ;)
Başlık: Ynt: CCS çarpma işlemi
Gönderen: vardal57 - 11 Mart 2017, 20:29:53
int32