1

Тема: перевід з десятичної системи в дворічну (відємні числа)

Завдання полягає в тому щоб перевести число з десяткової системи в двійкову, вивести кількість 1

public class problem81 {
    public static void binar(int a, boolean t){
        int b, numertor=0;
        boolean d=false;
        if(a%2==1)
            d=true;
        while(a !=0){
            b = a%2;
            if(b==1)
                numertor++;
            a = a/2;
        }
        if(t)
            System.out.print(numertor+" ");
        else {
            if(d)
                System.out.print(32 - numertor + 1 + " ");
            else
                System.out.print(32 - numertor + " ");
        }
    }
    public static void main(String [] args) {
       String string = "";
        String[] strings = string.split(" ");
        for(String str: strings){
            if(new Integer(str)>0){
                binar(new Integer(str), true);
            }else {
                binar(-new Integer(str), false);
            }
        }
    }
}

з додатніми числами все елементарно, але з відємними проскакує баг
спосіб кодування -5 => 00000101 => 11111010 +1 = 11111011
вхідні дані
-151138 4 -1763853021 -19235 -127 -158074013 -52012 -126 -148499 16111631 -904353072 -105600 -9910344 -185739417 -3 9 9565027 -121 14546 -15 -1390 36670 -1740180049 13637 1470015 39461 15533 -18595 9 10127 1477591 -473 4308 -11 -444925 16929 44 12007 124 0 12224573 -17 -469171 6 -19 -663559675 -9328026 16485 -15431441 179068761 165184 -18235240 -106 -1103969743
правильний результат
24 1 19 26 26 21 23 26 27 14 13 20 20 22 31 2 13 28 7 29 25 10 18 7 14 7 9 27 2 9 13 27 5 30 20 4 3 10 5 0 12 31 23 2 30 14 20 5 19 16 5 17 28 15
мій результат
24 1 19 26 26 21 24 26 27 14 16 26 22 22 31 2 13 28 7 29 25 10 18 7 14 7 9 27 2 9 13 27 5 30 20 4 3 10 5 32 12 31 23 2 30 14 20 5 19 16 5 19 28 15
підкажіть в чому проблема

2

Re: перевід з десятичної системи в дворічну (відємні числа)

Баг з нулем: в 26 рядку поставте >=замість >

Подякували: fkskf1

3

Re: перевід з десятичної системи в дворічну (відємні числа)

І напишіть, які числа відрізняються від правильної відповіді

Подякували: fkskf1

4

Re: перевід з десятичної системи в дворічну (відємні числа)

Ще один варіант:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] input = reader.readLine().split("([ \t\r\n]|\\s)+");
        ArrayList<Integer> list = new ArrayList<Integer>(input.length);
        System.out.println();
        for(String s : input) {
            System.out.print(String.format("%11s", s));
            System.out.print(" ");
            int i = Integer.parseInt(s);
            System.out.print(s = String.format("%32s",
                Integer.toBinaryString(i)).replace(' ', '0'));
            System.out.print(" ");
            list.add(i = s.length() - s.replace("1", "").length());
            System.out.print(String.format("%2s", i));
            System.out.println();
        }
        System.out.println();
        for(int i : list) {
            System.out.print(' ');
            System.out.print(i);
        }
    }
}

Наче працює.

Подякували: fkskf1