• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego wychodzi mi taka wartość przesunięcia bitowego?

Mały hosting, OGROMNE możliwości
+1 głos
260 wizyt
pytanie zadane 11 stycznia 2021 w C i C++ przez tonn204 Mądrala (7,470 p.)

Cześć, dlaczego w zmiennej y dostaję wynik 12? Nie powinno tam wyjść 20?

#include <stdio.h>

int main()
{
	int x = 6;
	int y = (x << 1);
	printf("%d\n", x);
	printf("%d\n", y);

	return 0;
}

 

1
komentarz 11 stycznia 2021 przez Oscar Nałogowiec (29,360 p.)
Przesunięcie bitowe w lewo odpowiada pomnożeniu wartości zmiennej przez odpowiednią potęgę 2. 2 do potęgi 1 to 2.

1 odpowiedź

0 głosów
odpowiedź 11 stycznia 2021 przez VBService Ekspert (256,580 p.)
edycja 11 stycznia 2021 przez VBService

What does a bitwise shift (left or right) do and what is it used for?

#include <stdio.h>

char *int2bin(int n) {
    static char bin[33];
    int x;
    for (x=0; x<32; ++x) {
        bin[x] = n & 0x80000000 ? '1' : '0';
        n <<= 1;
     }
     
     bin[x] = 32;
     return(bin);
}

int main()
{
    int x = 6;
    for (int bit=0; bit<=28; ++bit) {
        int y = (x << bit);
        printf("%2d << %-2d = %-10d\t%10d -- %s\n", x, bit, y, y, int2bin(y));
    }
   
    return 0;
}

 

P.S. Bitwise Calculator - online

Podobne pytania

0 głosów
1 odpowiedź 433 wizyt
pytanie zadane 20 października 2016 w C i C++ przez Ku Ba Nowicjusz (150 p.)
+1 głos
2 odpowiedzi 856 wizyt

93,715 zapytań

142,629 odpowiedzi

323,260 komentarzy

63,257 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...