Тема: перевід з десятичної системи в дворічну (відємні числа)
Завдання полягає в тому щоб перевести число з десяткової системи в двійкову, вивести кількість 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
підкажіть в чому проблема