unsigned int



Açıklama

Uno ve diğer ATMEGA tabanlı kartlarda, işaretsiz girişler (işaretsiz tam sayılar), 2 baytlık bir değer depoladıkları için girişlerle aynıdır. Negatif sayıları depolamak yerine sadece pozitif değerler depolarlar, 0 ila 65.535 ((2 ^ 16) - 1) arasında faydalı bir aralık sağlarlar.

Due, 0 ile 4.294.967.295 (2 ^ 32-1) arasında değişen bir 4 bayt (32 bit) değeri depolar.

İmzasız ve (imzalı) ints arasındaki fark, bazen "işaret" biti olarak adlandırılan en yüksek bitin yorumlanması biçimindedir. Arduino int tipinde (imzalı), yüksek bit "1" ise, sayı negatif bir sayı olarak ve diğer 15 bit ( 2'nin tamamlayıcı matematiği ) ile yorumlanır.

Sözdizimi

unsigned int var = val;

Parametreler

var : değişken adı.
val : o değişkene atadığınız değer.

Örnek Kod

unsigned int ledPin = 13;

Notlar ve Uyarılar

İmzasız değişkenler maksimum kapasitelerini aşacak şekilde yapıldıklarında, 0'a geri döner ve tersi yönde:

 unsigned int x; x = 0; x = x - 1; // x now contains 65535 - rolls over in neg direction x = x + 1; // x now contains 0 - rolls over 

İmzasız değişkenlere sahip matematik, imzasız değişkeniniz asla devrilemese bile beklenmedik sonuçlar verebilir.

MCU aşağıdaki kuralları uygular:

Hesaplama, hedef değişken kapsamında yapılır. Hedef değişken imzalı ise, her iki giriş değişkeni de imzasız olsa bile imzalı matematik yapar.

Ancak, bir ara sonuç gerektiren bir hesaplama ile, ara sonucun kapsamı kod tarafından belirtilmez. Bu durumda, MCU ara sonuç için imzasız matematik yapar, çünkü her iki giriş de imzasızdır!

 unsigned int x = 5; unsigned int y = 10; int result; result = x - y; // 5 - 10 = -5, as expected result = (x - y) / 2; // 5 - 10 in unsigned math is 65530! 65530/2 = 32765 // solution: use signed variables, or do the calculation step by step. result = x - y; // 5 - 10 = -5, as expected result = result / 2; // -5/2 = -2 (only integer math, decimal places are dropped) 

Neden imzasız değişkenler kullanılmalı?

  • Rollover davranışı isteniyor, örneğin sayaçlar

  • İmzalı değişken biraz fazla küçük, ancak uzun / şamandıra bellek ve hız kaybından kaçınmak istiyorsunuz.

Ayrıca Bakınız