Minden, ami elektronika

Elektronikával hobbi szinten foglalkozó oldal

unsigned int

2019. szeptember 05. 23:54 - raptor13

Leírás

Az Uno és a többi ATMEGA processzorral gyártott alaplapokon az előjel nélküli egészek tárolása megegyezik az előjelesekkel abban, hogy 2 bájtot foglalnak a memóriából. A negatív számok tárolása helyett azonban csak a pozitív értékeket tárolják, 0-65535 tartományban.

A Due 4 bájton tárolja (32 bit), 0-tól 4 294 967 295-ig.

Az előjel nélküli és az előjeles számok közötti különbség abban rejlik ahogy az első bitet értelmezik, amelyet néha "jel" bitnek is nevezünk. Az Arduino int típusban (amely előjeles), ha az első bit "1", akkor a számot negatív számnak kell tekinteni, a másik 15 bitet pedig kettes komplemensként értelmezzük.

Szintaxis

unsigned int var = val;

paraméterek

var: változó neve.
val: az az érték, amelyet hozzárendelsz ehhez a változóhoz.

Példakód

unsigned int ledPin = 13;

Megjegyzések és figyelmeztetések

 

Ha az előjel nélküli változó meghaladja maximális értékét (túlcsordul), akkor "visszafordul" 0-ra, és fordítva:

Az előjel nélküli változókkal végzett műveletek váratlan eredményeket hozhatnak, még akkor is, ha nincs túlcsordulás. A mikrovezérlő a következő szabály alapján dolgozik:

  • A számítást az eredményül szolgáló változó adattípusa szerint végzi el. Például: ha az eredményt előjeles változóban tároljuk, akkor a matematikai művelet az alapján lesz végrehajtva, még akkor is, ha a bemenő adattípusok előjel nélküliek.
  • Egy közbenső eredményt igénylő számítás esetén a közbenső eredmény előjel, vagy előjel nélküliségét a kód nem határozza meg. Ebben az esetben a mikrovezérlő előjel nélküli számként tekinti, mert mindkét operátora előjel nélküli!

Miért érdemes egyáltalán előjel nélküli változókat használni?

  • Ha a túlcsordulás hasznos, pl. számlálók
  • Ha az előjeles változó maximális méretébe csak éppen, hogy nem férünk bele és ezért nem szeretnénk több memóriát foglaló adattípust használni

Lásd még

String()

array

bool

boolean

byte

char

double

float

int

long

short

size_t

string

unsigned char

unsigned long

void

word

 

Szólj hozzá!

A bejegyzés trackback címe:

https://electro.blog.hu/api/trackback/id/tr2915042954

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása