| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
| Sasho92 |
Публикувано на: 15-01-2015, 11:28
|
|
Име: Група: Потребител Ранг: Новопостъпил Мнения: 15 Регистриран на: 15.01.15 |
Преобразуване от десеттична в двоична бройна система.
Така както съм я написал програмата отговаря точно на описането на уикипедия http://bg.wikipedia.org/wiki/Двоична_бройна_система и другото което е решенията на примерите в уикито съвпадат с решения, които ми изкарва програмата.Като си смятам на листче и химикал пак ми се получават решенията които ми изкарва програмата .. НО като задам командата "String b = Integer.toBinaryString(a);" нали в отделен клас,просто за проверка, се изписват други решения... не знам защо.Това ми е въпросът към вас. От къде идва разликата??Сигурен съм, че съм разбрал как става пресмятането, математика винаги ми е била лесна. package dsdsadsa; import java.util.Scanner; public class sdadsa { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Vavedete chislo "); int a = input.nextInt(); int b = 1 ; if (a%2==0){ System.out.print(0); }else{ System.out.print(1); } for (int i = a; i>=1;i=i/2){ b=i/2; if (b%2==0){ System.out.print(0); }else{ System.out.print(1); } } } } |
| ivan84 |
Публикувано на: 15-01-2015, 12:24
|
|
Име: Група: Форумен член Ранг: Почетен член Мнения: 8170 Регистриран на: 01.04.11 |
Извеждаш битовете на обратно. Най-младшия бит е най десния, а ти го поставяш най в ляво (на мястото на най-старшия). С други думи, получаваш огледално числото.
Имай в предвид, че тази задачка се реализира с побитови операции а не с делене. |
| Lachezar |
Публикувано на: 15-01-2015, 12:27
|
![]() Име: Лъчезар Добрев Група: Потребител Ранг: Почетен член Мнения: 2795 Регистриран на: 10.11.04 |
Циклиш в обратен ред: вадиш последните цифри, а ги печаташ първи. Не знам с какъв апарат разполагаш: това може да се реши с рекурсия или с буфер.
Отделно правиш някаква странна хватка: първо делиш да две веднъж, след това въртиш цикъл върху остатъка. Няма смисъл от това, първата проверка може да бъде сложена в цикъла. За да спестиш нерви на четящите (и съответно да подобриш количеството и качеството на отговорите) използвай [CODE] тага на форума. -------------------- И'м ватцхинг ъоу...
|
| Sasho92 |
Публикувано на: 15-01-2015, 15:53
|
|
Име: Група: Потребител Ранг: Новопостъпил Мнения: 15 Регистриран на: 15.01.15 |
Благодаря. Сега дочетох упътването дето е дал човекът при задачките, това е този тип задачи за който не сме взели абсолютно всичко, за да ги решим.След 2 глави има глава бройни с-ми кадето са обяснени по добре нещата. Не разбрах само като копи-пейстна кода от джавата ми тука защо се махат растоянията от началото на редовете, само трябва да напиша това [CODE] ли?
|
| ivan84 |
Публикувано на: 15-01-2015, 16:16
|
|
Име: Група: Форумен член Ранг: Почетен член Мнения: 8170 Регистриран на: 01.04.11 |
Тук е обяснено горе долу.
Като публикуваш мнение, имаш копче "Прегледай". Поиграй си ако не ти е стане ясно. |
![]() |
![]() ![]() ![]() |