Saturday 9 August 2008

Fungsi biner



/*
Bagaimana cara untuk mengubah suatu nilai desimal kedalama nilai biner. Dalam PHP telah ada fungsi bawaan yaitu decbin, namun bagaimana jika kita memasukkan karakter ascii semisal "A" dan ingin tahu berapa nilai binernya? caranya adalah sbb:

Pertama:
kita membutuhkan fungsi ord, yang merupakan fungsi bawaan dari PHP. fungsi ord ini sendiri berfungsi untuk mendapatkan nilai ascii dari suatu karakter, misal nilai ascii dari karakter A adalah 65
ord("A");

Kedua:
setelah kita mendapatkan sebuah nilai ascii, dalam hal ini adalah 65 maka, kita ubah angka 65 tersebut menjadi biner dengan fungsi bawaan PHP yaitu decbin(), dengan begitu maka akan di dapatkan nilai binernya adalah 1000001
decbin(65);

Ketiga:
Sebenarnya kita telah mendapatkan nilai biner dari karakter A, tapi ada yang kurang sempurna bukan?! yaph, seharusnya ada 8 angka biner untuk mewakili ascii A, yaitu 01000001. Kemana angka 0 yang paling kiri? memang dengan menggunakan fungsi decbin() maka angka 0 pada bagian paling kiri rangkaian biner akan diabaikan, alias di hilangkan karena memang gag berpengaruh.

Untuk mendapatkan 8 angka biner dengan tanpa menghilangkan angka 0 dibagian paling kiri kita perlu menggunakan fungsi str_pad() yang gunanya untuk menambahkan karakter tertentu pada suatu string sesuai yang kita inginkan. fungsi str_pad() ini sendiri memiliki beberapa
argument yang bisa digunakan seperti STR_PAD_RIGHT, STR_PAD_LEFT, or STR_PAD_BOTH. Argumen pada str_pad() otomatis akan menggunakan str_pad_right jika kita tidak memberikan argument pada fungsi str_pad().

Karena kita akan menambahkan angka 0 pada bagian paling kiri dari 1000001, yang berarti karakter ke delapan dihitung dari kiri. Maka, kita dapat membuat scriptnya sebagai berikut:
str_pad("1000001", 8, "0", STR_PAD_LEFT);
*/
function ascii_biner($char)
{
return str_pad(decbin(ord($char)), 8, "0", STR_PAD_LEFT);
}


/*
Sekarang kita akan melakukan kebalikan dari fungsi diatas, yaitu bagaimana membuat nilai biner menjadi karakter ascii yang bisa kita kenali.

Pada dasarnya PHP telah menyiapkan semua keperluan kita, jadi gag perlu mikir yang terlalu susah dan rumit.
Pertama:
PHP telah menyiapkan sebuah fungsi yang bernama bindec(), yang berguna untuk mengubah nilai biner menjadi nilai desimal. Dengan ini jika kita memasukkan "01000001", maka akan menghasilkan keluaran berupa bilangan desimal bernilai 65.
bindec("01000001");

kedua:
Nilai desimal yang kita dapatkan tadi merupakan representasi dari suatu karakter ascii, pada awlnya kita tidak tahu representasi karakter apakah angka 65 itu. Kita dapat mengetahuinya dengan fungsi chr(), yang juga merupakan fungsi bawaan dari PHP. Dengan begini maka kita akan tahu bahwa 65 adalah representasi dari karakter "A".
chr(65);
*/
function biner_ascii($bin)
{
return chr(bindec($bin));
}


/*
Berikut kita akan uji coba fungsi yang telah kita buat tadi, sederhana sekali cara mencobanya.
*/
echo ascii_biner("A");
echo "
";
echo biner_ascii("01000001");

?>

No comments: