Slav3k
1
Zdravím,
prosím vás, potřebuju jedničku shiftovat doleva až o 64míst. Chci to použít v AVRku. Je následující kód správně ?
ROM_NO & ~((uint64_t)1 << id_bit_number);
snad pochopíte co jsem tím myslel …
ROM_NO je uint64_t
id_bit_number může nabývat hodnot 1 - 63
díky !
Divous
2
Je mi líto, ale takhle to nepůjde.
Šiftování je omezeno na 16 bitů.
Nevím z jakého důvodu, ale prostě to tak je.
AB1
(AB)
3
Důvod je ten, že celočíselná konstanta (zde 1) je defaultně typu int.
Po přetypování posun funguje.
uint64_t num;
num = (1 << 40); // nejde
num = ((uint64_t)1 << 40); //jde
Divous
4
Zase jsem o kousek moudřejší