Napisz program, który dla danej liczby n ustawi jej k-ty bit na 1. Bity numerowane są od najmniej znaczącego, od zera.
No i rozwiazanie wyglada tak:
#include <stdio.h>
int main ()
{
int n,k,x,f;
scanf ("%d\n%d",&n, &k);
x=1<<k;
f=n|x;
printf ("%d\n",f);
return 0;
}
Teraz czy moglby mi ktos wytlumaczyc, bo nie rozumiem. Jezeli wprowadzimy, powiedzmy, n=8 [1000] i k=2, to powinnismy otrzymac 10 [1010], bo drugi bit jest ustawiony na 1, tak? Ale dlaczego tak nie jest? Dlaczego program przesuwa wszystkie bity o 1 w lewo, a nastepnie bierze alternatywe...
Prosze o pomoc