57 lines
1.5 KiB
Java
57 lines
1.5 KiB
Java
|
|
||
|
public class BinaryConverter
|
||
|
{
|
||
|
|
||
|
public static void main(String[] args)
|
||
|
{
|
||
|
for(int i = -5; i < 33; i++)
|
||
|
{
|
||
|
System.out.println(i + ": " + toBinary(i));
|
||
|
System.out.println(i);
|
||
|
//always another way
|
||
|
System.out.println(i + ": " + Integer.toBinaryString(i));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* pre: none
|
||
|
* post: returns a String with base10Num in base 2
|
||
|
*/
|
||
|
public static String toBinary(int base10Num)
|
||
|
{
|
||
|
boolean isNeg = base10Num < 0;
|
||
|
base10Num = Math.abs(base10Num);
|
||
|
String result = "";
|
||
|
while(base10Num > 1)
|
||
|
{
|
||
|
result = (base10Num % 2) + result;
|
||
|
base10Num /= 2;
|
||
|
}
|
||
|
assert base10Num == 0 || base10Num == 1 : "value is not <= 1: " + base10Num;
|
||
|
result = base10Num + result;
|
||
|
assert all0sAnd1s(result);
|
||
|
if( isNeg )
|
||
|
result = "-" + result;
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* pre: cal != null
|
||
|
* post: return true if val consists only of characters 1 and 0, false otherwise
|
||
|
*/
|
||
|
public static boolean all0sAnd1s(String val)
|
||
|
{
|
||
|
assert val != null : "Failed precondition all0sAnd1s. parameter cannot be null";
|
||
|
boolean all = true;
|
||
|
int i = 0;
|
||
|
char c;
|
||
|
while(all && i < val.length())
|
||
|
{
|
||
|
c = val.charAt(i);
|
||
|
all = c == '0' || c == '1';
|
||
|
i++;
|
||
|
}
|
||
|
return all;
|
||
|
}
|
||
|
}
|