sadece binary(2 lik tabanda denedim ama sanırım geri kalan içinde çalışır)
public class Addiere {
// converts integer n into a base b string
static String toString(int n, int base) {
// special case
if (n == 0) return "0";
String digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String s = "";
while (n > 0) {
int d = n % base;
s = digits.charAt(d) + s;
n = n / base;
}
return s;
}
// convert a String representing a base b integer into an int
static int fromString(String s, int b) {
int result = 0;
int digit = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= '0' && c <= '9')
digit = c - '0';
else if (c >= 'A' && c <= 'Z')
digit = 10 + c - 'A';
else return 0;
if (digit < b) result = b * result + digit;
else return 0;
}
return result;
}
public static long addiere(long binary_1, long binary_2, int basis)
{
int int_total = fromString(binary_1+"",basis) + fromString(binary_2+"", basis) ;
long retVal = 0;
try{
retVal = Long.parseLong(toString( int_total , basis ) );
}catch(Exception exc){}
return retVal;
}
public static void main(String[] args) {
long s1 = 101111;
long s2 = 101111;
System.out.println("a: " +s1+ " - " + fromString(""+s1,2));
System.out.println("b: " +s2+ " - " + fromString(""+s2,2));
System.out.println("+");
System.out.println("-------------");
System.out.println("c: " + addiere(s1,s2,2) +" - "+fromString(""+addiere(s1,s2,2),2));
System.exit(0);
}
}
|