Minggu, 23 Oktober 2011

Konversi Antar Basis Bilangan

Konversi Antar Basis Bilangan
Sudah dikenal, dalam bahasa komputer terdapat empat basis bilangan. Keempat bilangan itu adalah biner, oktal, desimal dan hexadesimal. Keempat bilangan itu saling berkaitan satu sama lain. Rumus atau cara mencarinya cukup mudah untuk dipelajari. Konversi dari desimal ke non-desimal, hanya mencari sisa pembagiannya saja. Dan konversi dari non-desimal ke desimal adalah: 1. Mengalikan bilangan dengan angka basis bilangannya. 2. Setiap angka yang bernilai satuan, dihitung dengan pangkat NOL (0). Digit puluhan, dengan pangkat SATU (1), begitu pula dengan digit ratusan, ribuan, dan seterusnya. Nilai pangkat selalu bertambah satu point.
Konversi Biner ke Oktal
Metode konversinya hampir sama. Cuma, karena pengelompokkannya berdasarkan 3 bit saja, maka hasilnya adalah: 1010 (2) = …… (8) Solusi: Ambil tiga digit terbelakang dahulu. 010(2) = 2(8) Sedangkan sisa satu digit terakhir, tetap bernilai 1. Hasil akhirnya adalah: 12.
Konversi Biner ke Hexadesimal
Metode konversinya hampir sama dengan Biner ke Oktal. Namun pengelompokkannya sejumlah 4 bit. Empat kelompok bit paling kanan adalah posisi satuan, empat bit kedua dari kanan adalah puluhan, dan seterusnya. Contoh: 11100011(2) = …… (16) Solusi: kelompok bit paling kanan: 0011 = 3 kelompok bit berikutnya: 1110 = E Hasil konversinya adalah: E3(16)
Konversi Biner ke Desimal
Cara atau metode ini sedikit berbeda. Contoh: 10110(2) = ……(10) diuraikan menjadi: (1×24)+(0×23)+(1×22)+(1×21)+(0×20) = 16 + 0 + 4 + 2 + 0 = 22 Angka 2 dalam perkalian adalah basis biner-nya. Sedangkan pangkat yang berurut, menandakan angkat 0 adalah satuan, pangkat 1 adalah puluhan, dan seterusnya.
Konversi Oktal ke Biner
Sebenarnya, untuk konversi basis ini, haruslah sedikit menghafal tabel konversi utama yang berada di halaman atas. Namun dapat dipelajari dengan mudah. Dan ambillah tiga biner saja. Contoh: 523(8) = …… (2) Solusi: Dengan melihat tabel utama, didapat hasilnya adalah: 3 = 011 2 = 010 5 = 101 Pengurutan bilangan masih berdasarkan posisi satuan, puluhan dan ratusan. Hasil: 101010011(2)
Konversi Hexadesimal ke Biner
Metode dan caranya hampir serupa dengan konversi Oktal ke Biner. Hanya pengelompokkannya sebanyak empat bit. Seperti pada tabel utama. Contoh: 2A(16) = ……(2) Solusi: A = 1010, 2 = 0010 Hasil: 101010(2). Dengan catatan, angka “0″ paling depan tidak usah ditulis.
Konversi Desimal ke Hexadesimal
Ada cara dan metodenya, namun bagi sebagian orang masih terbilang membingungkan. Cara termudah adalah, konversikan dahulu dari desimal ke biner, lalu konversikan dari biner ke hexadesimal. Contoh: 75(10) = ……(16) Solusi: 75 dibagi 16 = 4 sisa 11 (11 = B). Dan hasil konversinya: 4B(16)
Konversi Hexadesimal ke Desimal
Caranya hampir sama seperti konversi dari biner ke desimal. Namun, bilangan basisnya adalah 16. Contoh: 4B(16) = ……(10) Solusi: Dengan patokan pada tabel utama, B dapat ditulis dengan nilai “11“. (4×161)+(11×160) = 64 + 11 = 75(10)
Konversi Desimal ke Oktal
Caranya hampir sama dengan konversi desimal ke hexadesimal.
Contoh: 25(10) = ……(8) Solusi: 25 dibagi 8 = 3 sisa 1. Hasilnya dapat ditulis: 31(8) 25 : 8 sisa 1 3 ——– 3 hasilnya adalah 31
Konversi Oktal ke Desimal
Metodenya hampir sama dengan konversi hexadesimal ke desimal. Dapat diikuti dengan contoh di bawah ini: 31(8) = ……(10) Solusi: (3×81)+(1×80) = 24 + 1 = 25(10)

Sabtu, 01 Oktober 2011

Konversi Data VB ( Visual Basic )

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

/* dimodifikasi dari manual strtol
* in : masukan
* out : keluaran
* op : 1 (hex to octal), -1 (octal to hex)
* return : 1 (sukses), 0 (ada error, masukan gk valid)
*/
int ho_oh (const char *in, char *out, int op)
{
long tmp;
char *endptr;
int base = (op == 1)? 16 : (op == -1)? 8 : -1;

if (base == -1) {
return(0);
}
errno = 0;
tmp = strtol(in, &endptr, base);
/* check for errors */
if ((errno == ERANGE && (tmp == LONG_MAX || tmp == LONG_MIN)) ||
(errno != 0 && tmp == 0)) {
perror("ho_oh");
return(0); /* return false */
}
if (endptr == in) {
fprintf(stderr, "no digits were found\n");
return(0); /* return false */
}
if (*endptr != '\0') {
return(0);
}
sprintf(out, (base == 16)? "%lo" : "%lx", tmp);

return(1);
}

/* test program */
int main (void)
{
const char *input = "377";
char output[100];

/* octal to hex */
if (ho_oh(input, output, -1)) {
printf("%s\n", output);
}

return(0);
}





Untuk Konversi Ke OKtal Ato Hexa kan dah ada fungsi c ndri.. :


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>


int n,i;
void oktal();
void hexa();
void biner();

main()
{
printf("Masukkan Nilai Dalam Desimal : ");
scanf("%d",&n);
printf("\nBilangan Desimal %d Jika Diubah Kedalam Biner :",n);
biner();
printf("\nBilangan Desimal %d Jika Diubah Kedalam Oktal :",n);
oktal();
printf("\nBilangan Desimal %d Jika Diubah Kedalam Hexadecimal :",n);
hexa();
getch();
}
void biner()
{
int a,b=0,array[100];
array[0]=n%2;
b=n/2;
for(i=1;i<100;i++)
{
array=b%2;
b=b/2;
if ((b==0) || (b==1))
{
i++;
array=b%2;
break;
}
}
for(a=i;a>=0;a--)
printf("%d",array[a]);
}
void hexa()
{
printf("%x",n);
}
void oktal()
{
printf("%o",n);
}