Jak w C zaprogramować, aby do tablicy 16 elementowe gdy pierwsze kilka elementów w tablicy jest puste ma dopisać 0?
A gdy mam sytuację gdy z działań wychodzi np. 10101 to jak zaprogramować aby dopisało z przodu tyle zer aby liczba była 32 bitowa?
- Co to znaczy że elementy są puste? Niezainicjalizowane?
- Możesz zrobić to przesunięciami bitowymi
Tylko wspomnę, że w big endian 10101 == 00010101 == 00000000010101
Mam program który przelicza liczby dziesiętne na binarne. I jeden robi to że wpisuje 0 i 1 do tablicy, a 2 po prostu ja wypisuje. Dane wyjściowe muszą być 0rzedstawione na 16 i 32 bitach. Mało pisałem w C więc nie wiem. Rozumiecie? Pomożecie?
Brunatny Terrorysta napisał(a):
Rozumiecie? Pomożecie?
No nie wiem, przede wszystkim pokaż co tam już masz.
A więc tak. Program ma liczbę dziesiętną przekształcać na liczbę w U2 na 16 i 32 bitach. Mam coś takiego:
#include <stdio.h>
int main()
{
int n, c, k, q, e, m;
printf("Wpisz liczbę dziesiętną: ");
scanf("%d", &n);
printf("Wpisz liczbę dziesiętną ponownie: ");
scanf("%d", &m);
printf("%d w systemie U2 na 16 bitach to: ", n);
for (c = 16; c >= 0; c--)
{
k = n >> c;
if (k & 1)
printf("1");
else
printf("0");
}
printf("\n");
printf("%d w systemie U2 na 32 bitach to: ", n);
for (q = 32; q >= 0; q--)
{
e = m >> q;
if (e & 1)
printf("1");
else
printf("0");
}
printf("\n");
return 0;
}
Proszę się nie śmiać - prawie wcale nie implementowałem niczego w C. Moje pytanie brzmi. Dlaczego gdy wpiszę 3 to na początku pojawia się 1 a nie 0? Da się to jakoś skrócić ten kod? I jak przerobić kod, aby przyjmowało liczby dodatnie. Przy liczbie dodatniej w U2, powinno wykonać:
- Wyznaczamy zapis dwójkowy liczby przeciwnej (czyli dodatniej).
- Otrzymany kod dwójkowy uzupełniamy w miarę potrzeb do rozmiaru formatu U2 - w naszym przypadku do 16 i 32 bitów.
- Dokonać negacji wszystkich bitów zapisu liczby U2.
- Do wyniku dodać 1.
Pomoże ktoś proszę?