Change Decimal (double/float) to biner/okta/heksa
(java programing)
latar belakang : temen minta buatin
alasan memakai java : lupa stetment compile c dalam terminal :p
Teman ku minta tapi tidak digunakan karena dia dapat yang pascal, tetapi dia bilang tetapi koma-koma masih belum bisa. :p (dalam hati, siapa suruh nga lihat program ku dulu)
algoritma muda saja, contoh :
biner : 2^x 2^3 2^2 2^1 2^0 1/(2^1) 1/(2^2) 1/(2^x)
okta : 8^x 2^3 8^2 8^1 8^0 1/(8^1) 1/(8^2) 1/(8^x)
dari cara perhitungan diatas kita dapat melihat suatu pola
a^x a^3 a^2 a^1 a^0 1/(a^1) 1/(a^2) 1/(a^x)
sehingga kita dapat membuat bilangan berapa pun semau kita (maksimum 16 , kecuali anda tahu kelanjutan dari bilangan heksa : 0123456789ABCDEF).
kita melakukan algoritma (a^y) ketika input kita lebih besar dari atau sama dengan 1. dan apabila di bawah 1 kita menggunakan algoritma (1/(a^y).
Nilai 10 diganti dengan A, 11 = B, C = 12 dan seterusnya.
Bagaimana tahu nilai nya? (kalau 0-1 biner mudah, kalau 1-16?)
nah mari langsung saja lihat listing codingnya dan analisis sendiri ya :p
(maaf jika berantakan, maklum saya tidak dibayar untuk ini^^. jika ada tampilan listing yang error mohon di koreksi, mungkin blogger memblock keyword tersebut)
note : maaf tidak memakai looping bagian outputnya, sehingga agak lebar :p
import javax.swing.JOptionPane;
import java.lang.String;
import java.io.*;
import java.math.*;
class Bineru {
public static void main(String[]Args){
double decx;
decx = Double.parseDouble(JOptionPane.showInputDialog("Masukan bilangan desimal yang ingin di Konversi (Jangan Gede-gede)"));
int bilx;
do{
bilx = Integer.parseInt(JOptionPane.showInputDialog("Masukan bilangan yang menjadi acuan konversi (biner = 2 okta = 8 heksa= 16 , Jangan Gila ya masukinnya!! max 16)"));}while(bilx<=1||bilx>16);
double z;
int x,b,a;
double d,e,c;
int[] hx= new int[44];
e=decx;
for (a=20;a>=0;a--) {
z=Math.pow(bilx,a);
hx[a]=0;
for (b=bilx-1;b>0;b--) {
c=z*b;
if (c<=e) {
hx[a]=b;
e= e-c;
}
}
}
x=22;
for (a=1;a<=20;a++) {
z=1/(Math.pow(bilx,a));
hx[x]=0;
for (b=bilx-1;b>=1;b--) {
if ((z*b)<=e) {
hx[x]=b; e=e-(z*b);
}
}
x=x+1;
}
if(bilx >= 10) {
System.out.println("Bilangan "+bilx+" dari "+decx+" adalah :\n ");
for (a=20;a>=0;a--){
switch(hx[a]){
case 10:
System.out.print("A");break;
case 11:
System.out.print("B");break;
case 12:
System.out.print("C");break;
case 13:
System.out.print("D");break;
case 14:
System.out.print("E");break;
case 15:
System.out.print("F");break;
default :
System.out.print(hx[a]);break;
}
}
System.out.print(".");
for (a=22;a<=43;a++){
switch(hx[a]){
case 10:
System.out.print("A");break;
case 11:
System.out.print("B");break;
case 12:
System.out.print("C");break;
case 13:
System.out.print("D");break;
case 14:
System.out.print("E");break;
case 15:
System.out.print("F");break;
default :
System.out.print(hx[a]);break;
}
}
System.out.print("\n");
}else{
System.out.println("Bilangan "+bilx+" dari "+decx+" adalah :\n "+hx[20]+hx[19]+hx[18]+hx[17]+hx[16]+hx[15]+hx[14]+hx[13]+hx[12]+hx[11]+hx[10]+hx[9]+hx[8]+hx[7]+hx[6]+hx[5]+hx[4]+hx[3]+hx[2]+hx[1]+hx[0]+"."+hx[22]+hx[23]+hx[24]+hx[25]+hx[26]+hx[27]+hx[28]+hx[29]+hx[30]+hx[31]+hx[32]+hx[33]+hx[34]+hx[35]+hx[36]+hx[37]+hx[38]+hx[39]+hx[40]+"\n");
}
System.exit ( 0 );
}
}
No comments:
Post a Comment