Isi kandungan:
Video: Exploring JavaScript and the Web Audio API by Sam Green and Hugh Zabriskie 2024
C + + pembolehubah disimpan secara dalaman sebagai nombor binari yang dipanggil. Nombor binari disimpan sebagai jujukan nilai 1 dan 0 yang dikenali sebagai bit. Kebanyakan masa, anda tidak perlu menangani bit tertentu yang anda gunakan untuk mewakili nombor. Kadang-kadang, ia adalah praktikal dan mudah untuk menggerumu dengan nombor di peringkat bit - jadi C ++ menyediakan satu set operator untuk tujuan itu.
Operator logik yang disebut bitwise beroperasi pada hujah mereka pada tahap bit. Untuk memahami bagaimana mereka berfungsi, mula-mula memeriksa bagaimana komputer menyimpan pembolehubah.
Sistem nombor perpuluhan
Angka-angka yang anda sudah kenal dari masa yang pertama kali anda boleh mengira jari anda dikenali sebagai nombor perpuluhan kerana ia berasaskan pada nombor 10. Secara umum, pengaturcara mengungkapkan pembolehubah C ++ sebagai nombor perpuluhan. Oleh itu, anda boleh menentukan nilai var sebagai (katakan) 123, tetapi pertimbangkan implikasi.
Nombor seperti 123 merujuk kepada 1 * 100 + 2 * 10 + 3 * 1. Semua nombor asas ini - 100, 10, dan 1 - adalah kuasa 10.
123 = 1 * 100 + 2 * 10 + 3 * 1
Ditunjukkan dengan cara yang sedikit berbeza (tetapi setara), 123 kelihatan seperti ini:
123 = 2 + 2 * 10 1 + 3 * 10 0 Ingat bahawa
mana-mana nombor . Sistem nombor lain Baik, okay, menggunakan 10 sebagai asas (atau
asas
) sistem pengiraan kami mungkin berasal dari 10 jari manusia, alat pengiraan asal. Pangkalan alternatif untuk sistem pengiraan hanya dengan mudah 20.
ini juga akan berfungsi: 123 10
= 1 * 8 2 + 7 * 8 < + 3 * 8 0 = 173 8 10 dan 8 kecil di sini merujuk kepada sistem penomboran, 10 untuk perpuluhan (asas 10) dan 8 untuk octal (asas 8). Sistem pengiraan boleh menggunakan mana-mana asas yang positif. Sistem nombor binari Komputer mempunyai dua jari. Komputer lebih suka mengira menggunakan pangkalan 2. Nombor 123 10
akan dinyatakan seperti ini:
123
10 = 0 * 2 7
+ 1 * 2 < 6 + 1 * 2 5 + 1 * 2 4 + 1 * 2 3 + 0 * 2 2 + 1 * 2 1 + 1 * 2 0 123 10 = 0 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * Konvensyen komputer mengungkapkan nombor perduaan dengan menggunakan digit 4, 8, 16, 32, atau bahkan 64 angka binari, walaupun digit utama adalah 0.Ini juga kerana cara komputer dibina secara dalaman. Oleh kerana istilah digit merujuk kepada berganda 10, digit binari dipanggil bit
(singkatan
digit binari >). A byte terdiri daripada 8 bit. (Memanggil digit binari bait-ia tidak kelihatan seperti idea yang baik.) Memori biasanya diukur dalam bait (seperti gulung diukur dalam unit lusin tukang roti). Dengan asas yang kecil, anda perlu menggunakan bilangan besar bit untuk menyatakan angka. Manusia tidak mahu kerumitan menggunakan ungkapan seperti 011110112 untuk menyatakan nilai biasa seperti 123 10 . Pengaturcara lebih suka untuk menyatakan nombor dengan menggunakan bilangan bit yang lebih banyak. Sistem octal - yang berdasarkan pada 3 bit - adalah sistem perduaan lalai pada hari-hari awal C. Kami melihat jejak ini walaupun hari ini - pemalar yang bermula dengan 0 dianggap sebagai oktaf dalam C ++. Oleh itu, baris: cout << "0173 =" << 0173 << endl; menghasilkan output berikut:
0173 = 123 Walau bagaimanapun, octal telah hampir sepenuhnya digantikan oleh sistem hexadecimal , yang berdasarkan pada digit 4-bit. Hexadecimal menggunakan digit yang sama untuk nombor 0 hingga 9. Untuk digit antara 9 dan 16, heksadesimal menggunakan enam huruf pertama abjad: A untuk 10, B untuk 11, dan sebagainya. Oleh itu, 123
10
menjadi 7B
16
, seperti ini:
123 = 7 * 16 1 + B (iaitu 11) * 16
= 7B 16 Pengaturcara lebih suka untuk menyatakan angka heksadesimal dalam gandaan digit 4 heksadesimal walaupun angka utama dalam setiap kes adalah 0. Akhirnya, siapa yang ingin menyatakan nombor perenambelasan seperti 7B
16 dengan menggunakan subskrip? Terminal tidak juga sokongan subskrip. Walaupun pada pemproses perkataan, ia seret untuk menukar fon ke dan dari mod subskrip hanya untuk mengetik dua digit yang buruk. Oleh itu, pengaturcara (tidak bodoh, mereka) menggunakan konvensyen untuk memulakan nombor heksadesimal dengan 0x. Oleh itu, 7B menjadi 0x7B. Menggunakan konvensyen ini, nombor heksadesimal 0x7B sama dengan 123 perpuluhan manakala 0x123 heksadesimal adalah sama dengan 291 perpuluhan. Potongan kod cout << "0x7B =" << 0x7B << endl; cout << "0x123 =" << 0x123 << endl;
menghasilkan output berikut:
0x7B = 123 0x123 = 291 Anda boleh menggunakan semua pengendali matematik pada nombor heksadesimal dengan cara yang sama anda akan menggunakannya pada nombor perpuluhan. Jika anda benar-benar mahu, anda boleh menulis nombor perduaan dalam C ++ '14 menggunakan awalan '0b'. Oleh itu, 123 menjadi 0b01111011.