Wpis z mikrobloga

Witam mam problem, przy wykonywaniu bitwise operations w jezyku C do obliczania maski pojawia sie dziwny problem. Maska jest typu uint64_t, na poczatku przypisuje jej wartosc 1 a potem w petli przesuwam bit w lewo. Wszytsko dziala dobrze to momentu przesuniecie bita o 31 miejsc:

przesuniecie o 30:
maska (dec) = 1073741824

przesuniecie o 31:
maska (dec) = 18446744071562067968

przesuniecie o 32:
maska (dec) = 1

Platforma to raspbeyy pi 4 z 64 bitowym systemem, jak proboje to samo na internetowym complierze to dziala dobrze...

#programowanie #programista15k #informatyka
  • 5
  • Odpowiedz
  • 0
@cordianss: @sok_z_buraka

problemem byla konstrukcja:

uint64_t mask = 1 << i;

gdzie i bylo lupowane od 0 do 35

po zmianie na:

uint64_t mask = 1;
mask = mask << i;

wszystko dziala

myslalem ze problem byl z platforma wiec dlatego nie wstawialem kodu, zwracam honor panowie
  • Odpowiedz