Tecnologia, programação e muito Visual FoxPro.

domingo, 1 de julho de 2012

Re: ]] XL-mania [[ Converter

 

Mohon maaf tanggapan sebelum ini terasa asal-asalan, saya kurang lengkap membaca problem-nya

Konversi dari Angka BINER (bilangan basis 2) ke Angka Decimal (bilangan basis 10) dengan Fungsi Bawaan dari Excel = Bin2Dec ternyata hanya dibatasi menghasilkan keluaran 4 digit. Jadi kalau data  Pak Abdul sampai 100 digit... (wow?!)

Secara toritis dengan rumuspun kita dapat mengkonversi Biner ke Desimal; Salah satu Rumusnya sbb:
=SUMPRODUCT(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),2^(LEN(A1)-ROW(INDIRECT("1:"&LEN(A1)))))

Kalkulasi untuk mengkonversi Biner ke Decimal adalah sbb:
Ktia contohkan suatu Angka biner mempunyai N digit. Kemudian tiap digit pada angka Biner dianggap 1 unit

unit ke N  (terkanan) dikalikan (2 pangkat 0)
unit ke N-1  dikallikan (2 pangkat 1)
unit ke N-1  dikallikan (2 pangkat 2)
unit ke N-1  dikallikan (2 pangkat 3)
begitu seterusnya hingga semua unit terolah.
Tahap terakhir: Semua hasil pengolahan unit dijumlahkan. Menjmlahkan dua array yg elemennya saling diperkalikan, dengan apalagi kalau bukan dengan fungsi SUMRPDUCT aliran sopan.

Masalahnya adalah cell excel itu hanya menerima bilangan max 15 digit. Jika lebih dari 15 digit, digit ke 16 dst dibulatkan menjadi 0.
Jadi untuk bilangan besar tentu ini dapat kita katakan SALAH, tidak presisi.

Di VBA-Ecxel kita kenal ada type data bilangan yg kapasitasnya lebih "BESAR" daripada sekedar 15 digit, dengan hasil yg
tetap presisi, yaitu type data Decimal
Jika dibuat bilangan utuh; data type decimal terbesar bisa mencapai: 79228162514264337593543950335 (lebar 29 digit)

Konversi Biner to Decimal, Jika ditulis dengan VBA sederhana (dlm prosedur fungsi) kira-kira seperti ini

Function BinToDeci(S As String) As String
    Dim N As Long, V As Variant
    For N = Len(S) To 1 Step -1
        V = V + CDec((2 ^ (Len(S) - N)) * CDec(Mid(S, N, 1)))
    Next N
    BinToDeci = Trim(CStr(V))
End Function


Tetapi dengan UDF fungsi-buatan-sendiri inipun data biner yg besar tidak dapat ditampilkan hasilnya.

Sekarang giliran Pak Abdul (atau member lain yg tertarik kasus ini) dipersilakan MEMBAYANGKAN:
Jika ada data biner selebar 1000 digit maka digit terkiri akan dikalikan (2 pangkat 999)
(2 pangkat 999) sendiri sudah mencapai bilangan sebesar 5.35754303593134E+300 (angka scientific format) yg bahasa awamnya
berarti = 535754303593134 dengan masih ada angka selebar 286 digit di belakangnya

Itu baru digit pertama, digit kedua harus dikaikan (2 pangka 998), digit ke 3 dikalikan (2 pangkat 997), dst; kemudian semuanya dijumlahkan.
Apakah data selebar itu tertampung jika ditulis di cell Excel?? Mohon dicoba
(Saya baru saja mencoba cell excel (yg diformat TEXT) tidak dapat menampilkan data selebar 1024 digit)

Mungkin masih ada cara lain (kita tetap menunggu slusi dari members lain) dengan menggunakan trik lain

misalnya dlm proses mengakumulasi hasil tiap digit (vs 2^ (N-1)) dijaga agar pada ambang batas type decimal,
hasil akumulasi sementara dikonversi menjadi TEXT, akumulasi diteruskan lagi dari 0
Pada akhir Loop, hasilnya adalah penggabungan (bukan menambahan) data TEXT yg tadinya disimpan
dalam suatu variable tersendiri.

~Rara


2012/7/1 Rara Wilis <ra2wilis@gmail.com>:
> 'Alaikum salam,
> Dengan fungsi bawaan excel  DEC2BIN, kapasitasnya sangat terbatas
> Bilangan desimal tertinggi yg dapat dikonversi menjadi bilangan Binary hanya
> sampai 511
> 512 sudah menghasilkan #NUM
>
> Solusinya dibuatkan Fungsi Sendiri
>
> Lihat WorkBook Lampiran
> Untuk memperbesar kapasitas anda dapat mengedit VBA Code nya
>
> ~Rara
>

>
> 2012/6/30 Abdul <moslem_hd@yahoo.co.id>
>> Assalamu`alaikum
>> Saya masih pemula, banyak yang posting masalah convert Biner ke Decimal,
>> cuma ketemu kasus. ada 1000 digit / karakter
>> bilangan biner. contoh ( 110111111110100100....(nol nya sampe 996).0011),
>> jika dg rumus =DEC itu hasilnya #Value,
>> ada solusi ga agar 100o digit bilangan biner itu dapat di cari ke Desimal
>> mohon bantuannya
>> makasi
h

__._,_.___
Recent Activity:
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| Woooowwww... member XL-mania tembus 20,000!!!                     |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message,  melecehkan,  tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan  winzip  jika  perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke  |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/           |
+-------------------------------------------------------------------+
| Berikan testimoni di :                                            |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html           |
+-------------------------------------------------------------------+
| Message lama ada di :                                             |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id]  |
| http://www.mail-archive.com/xl-mania@yahoogroups.com              |
+-------------------------------------------------------------------+
.

__,_._,___

Nenhum comentário:

Arquivo do blog