Witam!
Miałem dzisiaj na zajęciach zadanie żeby liczby wprowadzone przez użytkownika zamienić na liczby binarne, zanegować je i zamienić bity miejscami typu pierwszy bit jest ostatnim a ostatni pierwszym, drugi jest przedostatni a przedostatni drugi i tak dalej. Jednak z racji tego, że jestem słaby w programowaniu to mi to za bardzo nie wychodzi. Pomimo prób samodzielnego odwrócenia kolejności bitów zasięgnąłem do internetu i znalazłem algorytm (jak się mylę to przepraszam) "reverse". Jednak problem leży w tym że zamienia mi kolejności liczb np. z 1, 2, 4, 8, 16 na 16, 8, 4, 2, 1. Prosiłbym o pomoc :)
#include <pch.h>
#include <iostream>
#include <algorithm>
using namespace std;
void binarka(unsigned int liczba) // zamiana liczb dziesietnych na binarne
{
for (unsigned i = 8; i > 0; i >>= 1)
cout << ((liczba & i) ? "1" : "0");
}
int main()
{
const int a = 5; // zmienna o stałej wartości żeby było łatwiej zmienić wielkość tablicy
int tab[a]; // tablica przechowująca dane wprowadzone przez użytkownika
int negacja[a]; // tablica przechowująca znegowane liczby użytkownika w formie binarnej
for (int i = 0; i < a; i++) // wprowadzanie danych do tablicy
cin >> tab[i];
for (int i = 0; i < a; i++) // przypisywanie wartości tablic tab do tablicy negacja
{
negacja[i] = tab[i];
}
cout << endl;
for (int i = 0; i < a; i++) // negowanie liczb
{
binarka(~negacja[i]);
cout << endl;
}
cout << endl;
reverse(negacja, negacja + a); // odwracanie kolejnosci
for (int i = 0; i < a; i++) // wyswietlenie tablicy po odwroceniu kolejnosci
{
binarka(~negacja[i]);
cout << endl;
}
return 0;
}