Program zamieniajacy z systemu dziesietnego na binarny.

0

Witam! Probowałem zrobić program zamieniajacy liczbe z systemu dziesietnego na binarny. Program oblicza poprawnie tylko liczbę po zamianie trzeba czytać od prawej. I tutaj moje pytanie jak zamienić kolejność tablic ? A moze zrobic jakas petle, no nie wiem nie mam juz pomyslu, widzialem rozne kody zrodlowe ale nie czaje ich za bardzo.

#include <iostream>
using namespace std;
int liczba; int x[1000],i;
int main()
{
    cout <<"Podaj liczbe" <<endl;
    cin >>liczba;

do
    
    {
        
    x[i] = liczba % 2;
    liczba /=2;
    cout << x[i];
    
    }

    
while(liczba!=0);

    return 0;

}

0

Poszczególne cyfry zapisujesz sekwencyjnie do tablicy - zatem jak Ci się wydaje: co należy zrobić, aby wyświetlić je od końca?

1
spwr napisał(a):

Witam! Probowałem zrobić program zamieniajacy liczbe z systemu dziesietnego na binarny. Program oblicza poprawnie tylko liczbę po zamianie trzeba czytać od prawej. I tutaj moje pytanie jak zamienić kolejność tablic ? A moze zrobic jakas petle, no nie wiem nie mam juz pomyslu, widzialem rozne kody zrodlowe ale nie czaje ich za bardzo.

#include <iostream>
using namespace std;
int liczba; int x[1000],i;
int main()
{
    cout <<"Podaj liczbe" <<endl;
    cin >>liczba;

do
    
    {
        
    x[i] = liczba % 2;
    liczba /=2;
    cout << x[i];
    
    }

    
while(liczba!=0);

    return 0;

}

Bo modulo 2 operuje "od tyłu". Tzn liczba jest podzielna przez 2 bez reszty jeżeli jej ostatni bit jest równy 0. Zamiast modulo możesz sprawdzać bity na danej pozycji.

#include <iostream>

int main(int argc, char* argv[]) {
    uint64_t number = 123404321;

    int32_t bits_count = sizeof(number) * 8;
    uint64_t number_mask = 1ull << (bits_count - 1);
    while (number_mask > 0) {
        bool bit = (number & number_mask) != 0;
        std::cout << bit;
        number_mask >>= 1;
    }
    std::cout << std::endl;

    return 0;
}
2

Możesz uzyskać właściwą kolejność, jeżeli użyjesz rekurencji.

0

Po wielu próbach wyszło, zrobiłem to jednak na swoj sposob

#include <iostream>
using namespace std;
int liczba,i; int x[1000];
int main()
{
    cout <<"Podaj liczbe: " <<endl;
    cin >>liczba;
        do
{
    x[i] = liczba % 2;
    liczba /=2;
    i++;
}
    while(liczba!=0);


cout <<"Powyzsza liczba w zapisie binarnym wynosi: ";
    for(i;i>0;i--)
{
        cout << x[i-1];
}

    return 0;

}

1

A może tak:

#include <iostream>
#include <bitset>

int main() {
	unsigned int decimal = 0;
	
	std::cout << "Enter decimal number: " << std::endl;
	std::cin >> decimal;
	
	std::bitset<32> binary (decimal);
	
	std::cout << "Binary representation: " << binary.to_string() << "." << std::endl;
	
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1