İnt eksi işaretli değişkenin 16lık Tabanda 0xfff4 gibi görünmesi

Başlatan gold3nnn, 13 Mayıs 2021, 14:43:56

gold3nnn

Hayırlı bayramlar.

Keil kullanarak Stm32f103 programlıyorum. 1 tane encoderim var okumada hiç bir sıkıntım yok, yalnız encoder saat yönü tersine yani eksi değere doğru giderken DEBUG tan izliyorum.

Counter değişkenim decimal gösterirken eksi değerleri görebiliyorum. Ama Hexadecimal şeklinde baktığımda 0xfff4 gibi görünüyor.

if(counter < 0 ){...} dediğimde counter değerini sürekli sıfırdan büyük görüyor. Bunun çözümü nedir?

İYİ BAYRAMLAR...

bayelektronik

Derleyiciler negatif bilgisini 16 bitlik değişkenin 15. bitinde saklar. 0 dan 32767 kadar ilk dönem sayılar pozitif iken 32768 den 65535 kadar sayılar negatif anlam taşır. -1 bilgisi 65534 tür. Derleyici bu bilgileri desimal olarak kendi işler fakat siz bunu  hex olarak alırsanız direk hex görünür ve gerekli hesaplamaları sizin eklemeniz gerekir. Bu şekilde olduğunu biliyorum yanlışım varsa düzeltiniz.

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

gold3nnn

Tanımlamam şu şekilde işaretsiz değil diye biliyorum bu tanımlamayı yanlışım varsa düzeltin lütfen

int counter = 0;

gold3nnn

Alıntı yapılan: bayelektronik - 13 Mayıs 2021, 16:53:27Derleyiciler negatif bilgisini 16 bitlik değişkenin 15. bitinde saklar. 0 dan 32767 kadar ilk dönem sayılar pozitif iken 32768 den 65535 kadar sayılar negatif anlam taşır. -1 bilgisi 65534 tür. Derleyici bu bilgileri desimal olarak kendi işler fakat siz bunu  hex olarak alırsanız direk hex görünür ve gerekli hesaplamaları sizin eklemeniz gerekir. Bu şekilde olduğunu biliyorum yanlışım varsa düzeltiniz.

Bu mantıklı geldi bana... eksili değerleri karşılaştırabilmem için ne yapmam gerekiyor hangi değerden hangisini çıkartmam gerek ?

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

gold3nnn