Saya tahu itu 0x
adalah awalan untuk angka heksadesimal dalam Javascript. Misalnya, 0xFF
singkatan dari angka 255.
Apakah ada yang serupa dengan angka biner? Saya berharap 0b1111
untuk mewakili nomornya 15
, tetapi ini tidak berhasil untuk saya.
javascript
Misha Moroshko
sumber
sumber
0b0111_0_1_0_1
.Jawaban:
Memperbarui:
Versi JavaScript yang lebih baru - khususnya ECMAScript 6 - telah menambahkan dukungan untuk biner (awalan
0b
), oktal (awalan0o
) dan heksadesimal (awalan0x
:) literal angka:Fitur ini sudah tersedia di Firefox dan Chrome. Saat ini tidak didukung di IE, tetapi tampaknya akan ketika Spartan tiba.
(Terima kasih atas komentar Semicolon dan jawaban urish untuk menunjukkan hal ini.)
Jawaban asli:
Tidak, tidak ada yang setara dengan angka biner. JavaScript hanya mendukung literal angka dalam format desimal (tanpa awalan), heksadesimal (awalan
0x
) dan oktal (awalan0
).Salah satu alternatif yang mungkin adalah meneruskan string biner ke
parseInt
metode bersama dengan radix:sumber
0b
dukungan.int type
jugainteger type
, jadi semua bilangan bulat disimpan sebagai pelampung.Dalam ECMASCript 6 ini akan didukung sebagai bagian dari bahasa, yaitu
0b1111 === 15
benar. Anda juga dapat menggunakan huruf kapital B (mis0B1111
.).Cari
NumericLiterals
di dalam ES6 Spec .sumber
Saya tahu bahwa orang mengatakan bahwa memperluas prototipe bukan ide yang baik, tetapi sudah menjadi skrip Anda ...
Saya melakukannya dengan cara ini:
sumber
ParseInt("101", 2)
bisa menjadi jawaban yang sebenarnya!Jika masalah utama Anda adalah tampilan alih-alih pengkodean, ada sistem konversi bawaan yang dapat Anda gunakan:
Ref: Referensi Nomor JavaScript
sumber
Sejauh yang saya tahu tidak mungkin menggunakan denoter biner di Javascript. Saya punya tiga solusi untuk Anda, yang semuanya memiliki masalah. Saya pikir alternatif 3 adalah yang paling "tampan" untuk keterbacaan, dan mungkin jauh lebih cepat daripada yang lain - kecuali untuk biaya waktu menjalankan awal. Masalahnya hanya mendukung nilai hingga 255.
Alternatif 1:
"00001111".b()
Alternatif 2:
b("00001111")
Alternatif 3:
b00001111
Versi ini memungkinkan Anda mengetik 8 digit biner
b00000000
, 4 digit,b0000
dan digit variabelb0
. Itub01
ilegal, Anda harus menggunakanb0001
ataub1
.sumber
Semoga ini bermanfaat:
sumber
bin
ditugaskan nomor yang terlihat seperti itu dalam biner, tetapi sebenarnya sedang diuraikan basis 10.parseInt
Fungsi mengharapkan string sebagai arg pertama, sehingga mengubahnya menjadi "1111" (representasi basis 10), kemudian mem-parsing seolah-olah itu basis 2.Tidak, tetapi Anda dapat menggunakan parseInt dan secara opsional menghilangkan tanda kutip.
Satu-satunya kelemahan dari menghilangkan tanda kutip adalah bahwa, untuk jumlah yang sangat besar, Anda akan meluap lebih cepat:
sumber
Mengonversi string biner menjadi angka dan sebaliknya.
sumber
Saya tahu ini tidak benar-benar menjawab Q yang ditanyakan (yang sudah dijawab beberapa kali) sebagaimana adanya, namun saya sarankan Anda (atau orang lain yang tertarik pada subjek ini) mempertimbangkan fakta bahwa browser yang paling mudah dibaca & mundur / masa depan / lintas-browser-kompatibel cara adalah dengan hanya menggunakan representasi hex.
Dari frasa dari Q akan tampak bahwa Anda hanya berbicara tentang menggunakan literal biner dalam kode Anda dan tidak memproses representasi biner dari nilai numerik (yang parstInt adalah cara untuk pergi).
Saya ragu bahwa ada banyak programmer yang perlu menangani angka biner yang tidak terbiasa dengan pemetaan 0-F hingga 0000-1111. jadi pada dasarnya buat kelompok empat dan gunakan notasi hex.
jadi alih-alih menulis 101000000010 Anda akan menggunakan 0xA02 yang memiliki arti yang persis sama dan jauh lebih mudah dibaca dan lebih kecil kemungkinannya untuk memiliki kesalahan.
Perhatikan saja keterbacaan, Coba bandingkan mana yang lebih besar: 10001000000010010 atau 1001000000010010
dan bagaimana jika saya menulisnya seperti ini:
0x11012 atau 0x9012
sumber
sumber