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

Systemy liczbowe - jak przejść z jednego na drugi w c++

VPS Starter Arubacloud
0 głosów
843 wizyt
pytanie zadane 1 kwietnia 2020 w C i C++ przez Atman Użytkownik (810 p.)

Gdy chcę napisać liczbę w systemie ósemkowym a potem zamienić na inne systemy to daje rade. Ale przy szesnastkowym już od razu zamienia mi na dziesiętny a przy binarnym pokazuje mi błąd. Chciałbym żeby najpierw każda liczba była podana w systemie w którym ją wprowadzam a potem żeby następowała zamiana na inne systemy. Dla 16 i 2 jak mówiłem to nie działa. Proszę o pomoc.

#include <iostream>

using namespace std;

int main()
{
	int liczba10 = 15;
	cout<<"Podana liczba w systemie dziesietnym to: "<<liczba10<<endl;
	cout<<"Liczba w systemie szesnastkowym to: "<< hex << liczba10<<endl;
	cout<<"Liczba w systemie osemkowym to: "<< oct << liczba10<<endl<<endl;

	int liczba8 = 011;
	cout<<"Podana liczba w systemie osemkowym to: "<<liczba8<<endl;
	cout<<"Liczba w systemie szesnastkowym to: "<< hex << liczba8<<endl;
	cout<<"Liczba w systemie dziesietnym to: "<< dec << liczba8<<endl<<endl;

	int liczba2 = 0b0110;
	cout<<"Podana liczba w systemie dwojkowym to: "<<liczba2<<endl;
	cout<<"Liczba w systemie szesnastkowym to: "<< hex << liczba2<<endl;
	cout<<"Liczba w systemie dziesietnym to: "<< dec << liczba2<<endl;
	cout<<"Liczba w systemie osemkowym to: "<< oct << liczba2<<endl<<endl;

	int liczba16 = 0xAF;
	cout<<"Podana liczba w systemie szesnastkowym to: "<<liczba16<<endl;
	cout<<"Liczba w systemie dziesietnym to: "<< dec << liczba16<<endl;
	cout<<"Liczba w systemie osemkowym to: "<< oct << liczba16<<endl<<endl;
	
	
	system("PAUSE");
	return 0;
}

 

komentarz 1 kwietnia 2020 przez Atman Użytkownik (810 p.)
Z tego się niestety po angielsku nic nie dowiem

2 odpowiedzi

0 głosów
odpowiedź 1 kwietnia 2020 przez tangarr Mędrzec (155,140 p.)

Liczba po przypisaniu to po prostu liczba. Nie ma przypisanego systemu liczbowego który był użyty do jej wprowadzenia.

#include <iostream>
#include <bitset>
 
using namespace std;
 
int main()
{
    int liczba10 = 15;
    cout<<"Podana liczba w systemie dziesietnym to: "<<liczba10<<endl;
    cout<<"Liczba w systemie szesnastkowym to: "<< hex << liczba10<<endl;
    cout<<"Liczba w systemie osemkowym to: "<< oct << liczba10<<endl<<endl;
 
    int liczba8 = 011;
    cout<<"Podana liczba w systemie osemkowym to: "<< oct << liczba8<<endl;
    cout<<"Liczba w systemie szesnastkowym to: "<< hex << liczba8<<endl;
    cout<<"Liczba w systemie dziesietnym to: "<< dec << liczba8<<endl<<endl;
 
    int liczba2 = 0b0110;
    cout<<"Podana liczba w systemie dwojkowym to: "<< std::bitset<8>(liczba2) <<endl;
    cout<<"Liczba w systemie szesnastkowym to: "<< hex << liczba2<<endl;
    cout<<"Liczba w systemie dziesietnym to: "<< dec << liczba2<<endl;
    cout<<"Liczba w systemie osemkowym to: "<< oct << liczba2<<endl<<endl;
 
    int liczba16 = 0xAF;
    cout<<"Podana liczba w systemie szesnastkowym to: " << hex <<liczba16<<endl;
    cout<<"Liczba w systemie dziesietnym to: "<< dec << liczba16<<endl;
    cout<<"Liczba w systemie osemkowym to: "<< oct << liczba16<<endl<<endl;
     
     
    return 0;
}

 

0 głosów
odpowiedź 3 kwietnia 2020 przez TOWaD Mądrala (6,060 p.)

może tak działa ale na forum czytałem ze tak się nie robi

#include <iostream>
#include <sstream>
#include <bitset>
#include <iomanip>
#include <string>
#include <algorithm>



std::string binaryInt (int i) {

    std::bitset<sizeof(i)*8> s(i);
    std::stringstream ss;
    ss<<s;
    return ss.str();
}

std::string StartFromOne(std::string s) {

    size_t p=s.find('1');
    std::string binstr;
    if(p!=s.npos) binstr=s.substr(p);
    else binstr="";

    return binstr;
}
void coutbodh (int i) {

    std::bitset<sizeof(i)*8> s(i);
    std::cout <<" bin i="<<s<<std::endl;

    using std::oct;
    using std::dec;
    using std::hex;
    std::cout <<oct<<" oct i="<< i;
    std::cout <<dec<<"\n dec i="<< i;
    std::cout <<hex<<"\n hex i="<< i;

    std::cout <<'\n'<<std::string(30,'_')<< std::endl;
}
void ssistreambodh (int i,const std::ios::fmtflags & base) {

    std::cout <<"dane i=";
    std::stringstream ss;
    ss.setf(base,std::ios::basefield);
    ss<<i;
    std::cout <<ss.str()<<'\n'<< std::endl;

}
using namespace std;
int main() {

    int i; //tylko dodatnie

    i=10;
    ssistreambodh (i,ios::dec);
    coutbodh (i);

    i=0150;
    ssistreambodh (i,ios::oct);
    coutbodh (i);


    i=0Xa5;
    ssistreambodh (i,ios::hex);
    coutbodh (i);

    i=0b000010010010;
    std::string sw=StartFromOne(binaryInt(i));
    cout <<"dane i=0b"<<sw<< '\n'<<endl;
    coutbodh (i);

    return 0;
}

 

 

Podobne pytania

0 głosów
3 odpowiedzi 345 wizyt
pytanie zadane 29 sierpnia 2017 w Offtop przez Badzonor Obywatel (1,410 p.)
0 głosów
2 odpowiedzi 906 wizyt
pytanie zadane 30 października 2017 w Egzaminy zawodowe przez Zawisza czarny Obywatel (1,700 p.)
0 głosów
1 odpowiedź 809 wizyt

93,011 zapytań

141,977 odpowiedzi

321,257 komentarzy

62,352 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...