Konwersja systemu dziesiętnego na ósemkowy liczb ujemnych.
Ostatnio zmodyfikowano 2014-06-08 12:18
traktor01 Temat założony przez niniejszego użytkownika |
Konwersja systemu dziesiętnego na ósemkowy liczb ujemnych. » 2014-06-06 22:46:47 Witam! Mam funkcję: void konwersja( int a, int tab[ 10 ] ) { int osemkowa = 0; int i = 0; while( a > 0 ) { osemkowa = a % 8; a /= 8; tab[ i ] = osemkowa; i++; } }
Dokonuje ona zmiany reprezentacji liczb z dziesiętnego na ósemkowy (tablicę czytamy od tyłu). Chcę zmienić liczbę ujemną w systemie dziesiętnym na system ósemkowy. Po zmianie potrzebuje otrzymaną wartość mieć w postaci zmiennej string lub int w celu wpisania danych do tablicy. Wyklucza to użycie: cout<<oct<<liczba_dziesietna; Według tego polecenia np. liczba -12 powinna zostać zapisana jako: 7777777764. Proszę o wskazówki i z góry dziękuję za pomoc. [/i] |
|
Monika90 |
» 2014-06-06 23:00:21 Tzn. liczba ma być obcięta do 30 bitów? |
|
traktor01 Temat założony przez niniejszego użytkownika |
» 2014-06-06 23:01:32 Tak, zgadza się.Liczba ma być obcięta do 30 bitów. |
|
Monika90 |
» 2014-06-06 23:23:02 To jeżeli ja dobrze rozumiem, to coś takiego? std::string octal30( const int x ) { unsigned y = x & 03777777777; if( x < 0 ) y |=( 1u << 29 ); char buff[ 16 ]; std::sprintf( buff, "%o", y ); return buff; }
|
|
traktor01 Temat założony przez niniejszego użytkownika |
» 2014-06-06 23:32:07 Dokładnie o to chodziło. Problem rozwiązany. Bardzo dziękuję za pomoc - zaoszczędziło mi to wielu kolejnych godzin poszukiwań. |
|
Monika90 |
» 2014-06-06 23:45:51 Jeżeli o to chodziło to dobrze. Dla liczb dodatnich nie ma problemu, ale dla ujemnych nie jest jasne, co znaczy obcięta do 30 bitow. No ale dopóki nie będziesz miał bardzo dużych ujemnych liczb, to nie powinno być problemu. |
|
traktor01 Temat założony przez niniejszego użytkownika |
» 2014-06-07 11:42:37 Mógłbym prosić o jakieś materiały odnośnie nauki tego rodzaju rzeczy ew. o wytłumaczenie skąd jest ta wartość: 03777777777 i jak to się ma w innych systemach? W internecie niestety nie mogę znaleźć interesujących mnie informacji. Chciałbym wykonać tego typu konwersję również dla innych systemów liczbowych np. o podstawie 3 lub 5 itd. dla liczb ujemnych, ponieważ dla liczb dodatnich sprawa jest jasna. |
|
pekfos |
» 2014-06-07 20:22:51 Mógłbym prosić o jakieś materiały odnośnie nauki tego rodzaju rzeczy |
Google, algebra Boole'a, operatory bitowe C++. |
|
« 1 » 2 |