Rada shiftovani velkých intů 64b

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 !

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.

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

Zase jsem o kousek moudřejší :wink: