Skip to content

Latest commit

 

History

History
 
 

conversion

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Conversion

Pada dunia pemrograman tidak asing lagi mendengar sebutan Binary atau yang disebut juga bilangan Biner. Sistem bilangan yang merupakan dasar dari semua sistem digital saat ini. Bilangan biner hanya terdiri dari 2 simbol yaitu 0 dan 1. Pada pengelompokan bilangan biner dalam dunia komputer selalu berjumlah 8, dengan istilah 1 Byte/8 bit.

Contoh dari bilangan biner adalah 10011100

Daftar isi

Binary to decimal

Konversi dari biner ke angka desimal menggunakan cara mengeksponenkan angka 2 berdasarkan jumlah dari bilangan biner.

Rumus = (2n)

Contohnya 111001.

Biner 1 1 1 0 0 1
Desimal 25 24 23 22 21 20

1110001 = 1 x 25 + 1 x 24 + 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 57

Implementasi program.

Pada fungsi binaryToDecimal() menerima parameter berupa String biner. Untuk memudahkan perhitungan, ubah String menjadi List dengan menggunakan fungsi yang ada pada object String yaitu split('').

List<String> binaryList = binaries.split(''); // ['1', '1', '1', '0', '0', '0', '1']

Setelah dikonversi menjadi List, kita harus me-reverse list tersebut. Hal tersebut diperlukan karena kita akan mengeksponenkan angka 2 menggunakan index. Dan jangan lupa kita harus mengubah hasil yang telah di-reverse kembali menjadi list, karena nilai balik dari reversed adalah Iterable.

List<String> binaryListReversed = binaryList.reversed.toList(); // ['1', '0', '0', '0', '1', '1', '1']

Looping list tersebut dan mulai perhitungan untuk mendapatkan nilai desimal pada sebuah bilangan biner.

Untuk mengeksponenkan bilangan pada pemrograman Dart, kita hanya perlu mengimport library dart:math dan menggunakan fungsi pow(). Karena kita perlu bilangan biner bertipe data int untuk dikalikan dengan hasil eksponen, maka perlu ada parsing.

for (int index = 0; index < binaryListReversed.length; index++) {
  int binary = int.parse(binaryListReversed[index]);

  result += binary * math.pow(2, index).toInt();
}

Decimal to binary

Untuk konversi desimal ke biner agak sedikit berbeda.

Berikut langkahnya.

  1. Bagi angka dengan 2.
  2. Dapatkan hasil bagi bilangan untuk iterasi selanjutnya.
  3. Dapatkan sisa bagi untuk digit biner.
  4. Ulangi langkah tersebut sampai hasil bagi sama dengan 0.

Contoh konversi angka 13.

Dibagi 2 Hasil bagi Sisa bagi (Biner) Iterasi
13/2 6 1 0
6/2 3 0 1
3/2 1 1 2
1/2 0 1 3

Maka bilangan biner dari 13 adalah 1101.

Implementasi program.

Pada fungsi decimalToBinary() menerima input sebuah tipe data int. Kita harus menginisiasi nilai quotient atau hasil bagi yang berfungsi sebagai penanda.

int quotient = decimal;

Setelah itu looping dengan kondisi true yang bakal berhenti jika quotient sama dengan 0.

Didalam looping kita mendapatkan remainder atau sisa bagi menggunakan operator modulo dan quotient menggunakan operator bagi yang menghasilkan tipe data int. Hasil remainder disimpan ke list result.

while (true) {
  int remainder = quotient % 2;
  quotient = quotient ~/ 2;
  result.add(remainder.toString());

  if (quotient == 0) {
    break;
  }
}

Setelah quotient sama dengan 0 looping akan berhenti dan menghasilkan nilai list. List tersebut akan di-reverse dan menggunakan fungsi join() untuk mendapatkan nilai String.

return result.reversed.join('');

Text to binary

Pada fungsi textToBinary() menerima input sebuah text yang berupa tipe data String. Pecah text tersebut menjadi sebuah List untuk memudahkan konversi menggunakan fungsi split().

Setelah list didapatkan looping list tersebut dan ubah setiap String yang dilooping menjadi ASCII dengan menggunakan fungsi codeUnitAt(). Pada fungsi codeUnitAt() mempunyai parameter yang harus diisi yaitu index dari sebuah String yang akan diubah ke ASCII.

Kita akan menggunakan kembali fungsi decimalToBinary untuk konversi ASCII (desimal) ke biner. Setiap biner yang panjangnya kurang dari 8, maka tambahkan angka 0 dibagian kiri menggunakan padLeft().

for (String item in textList) {
  int decimal = item.codeUnitAt(0);
  String binary = decimalToBinary(decimal);

  // to 8 bit
  binary = binary.padLeft(8, '0');

  result.add(binary);
}

Setelah semua kata-kata diubah ke biner maka gabungkan menjadi sebuah String yang dipisahkan oleh spasi.

Setiap biner mewakili 1 kata.

return result.join(' ');

Binary to text

Pada fungsi binaryToText() mengubah biner ke sebuah text. Sekali lagi pecahkan String biner menjadi sebuah List memakai fungsi split().

Looping list tersebut, setiap item list yang berupa biner kita ubah menjadi desimal menggunakan fungsi binaryToDecimal. Angka desimal yang hasil konversi adalah bilangan ASCII, maka dari itu konversi ASII ke String menggunakan String.fromCharCode().

for (var item in binaryList) {
  int decimal = binaryToDecimal(item);
  String text = String.fromCharCode(decimal);

  result.add(text);
}

Dan nilai balikan dari looping tersebut adalah String satukan List menggunakan fungsi join().

return result.join('');