0+0=0
1+0=1
1+1=1
begitupula sebaliknya. Oke disini ada 2 kelas yang digunakan yaitu class main dan class prosesnya
#class proses
public class proses {
static String[] lookupTable = { //membandingkan data yang dimasukan
"0+0+0=00",
"0+0+1=01",
"0+1+0=01",
"0+1+1=10",
"1+0+0=01",
"1+0+1=10",
"1+1+0=10",
"1+1+1=11",};
static String lookup(char b1, char b2, char c) {
String formula = String.format("%c+%c+%c=", b1, b2, c);
for (String s : lookupTable) {
if (s.startsWith(formula)) { //method dalam string utk memulai dari awal yang dimulai dg “startsWith(formula)”
return s.substring(s.indexOf("=") + 1);
} }
throw new IllegalArgumentException(); }
/*method untuk membuat padding agar penambahan data yang beda bisa sama cthnya 1100+110 yg menambahkankan sbnyk n di bagian depannya shg datanya bisa dijumlahkan 1100+0110*/
static String zeroPad(String s, int length) {
while (s.length() < s = "0" length =" Math.max(s1.length()," s1 =" zeroPad(s1," s2 =" zeroPad(s2," result = "" carry =" '0';" i =" length">= 0; i--) {
String columnResult = lookup(s1.charAt(i), s2.charAt(i), carry);
result = columnResult.charAt(1) + result;
carry = columnResult.charAt(0); }
if (carry == '1') {
result = carry + result; }
return result; }
}
#Class main
import java.util.Scanner;
class main{
static Scanner sc=new Scanner(System.in);
public static void main(String args[]) {
System.out.println("masukan bilangan biner 1 =");
String s1=sc.next(); //data yng dimasukan berupa string sehingga masukannya lebih besar
System.out.println("masukan bilangan biner 2 =");
String s2=sc.next();
proses Aku=new proses(); //memanggil kelas proses dengan operator new
System.out.println("hasilnya adalah"+proses.add(s1,s2));
} }
Hasilnya:
1 komentar:
kk msih ad yg error gmna tuh
Posting Komentar