Bits, binary, and bitwise operators · Bit, biner, dan operator bitwise
Numbers are bits
- Inside the computer, every
intis a row of bits — each bit is a0or a1. - We usually read numbers in base 10, but the machine stores them in base 2 (binary).
- Bitwise operators let you look at and change individual bits.
Angka adalah bit
- Di dalam komputer, setiap
intadalah baris bit — setiap bit adalah0atau1. - Kita biasanya membaca angka dalam basis 10, tetapi mesin menyimpannya dalam basis 2 (biner).
- Operator bitwise memungkinkan Anda melihat dan mengubah bit individual.
Place value and powers of two
- In binary, each position is a power of two: 1, 2, 4, 8, 16, ...
- The byte
00010100is16 + 4 = 20. The rightmost bit is the 1s place. - An 8-bit byte can hold
0to255.
Nilai tempat dan pangkat dua
- Dalam biner, setiap posisi adalah pangkat dua: 1, 2, 4, 8, 16, ...
- Byte
00010100bernilai16 + 4 = 20. Bit paling kanan adalah tempat 1s. - Byte 8-bit dapat menampung
0hingga255.
Reading a bit with >> and & 1
- The shift
n >> imoves the bits right byiplaces, so bitilands in the 1s place. - The mask
& 1keeps only that lowest bit, giving0or1. - So
(n >> i) & 1reads the value of bit numberi.
Membaca bit dengan >> dan & 1
- Shift
n >> imenggeser bit ke kanan sebanyakitempat, sehingga bitimendarat di tempat 1s. - Mask
& 1hanya mempertahankan bit terendah itu, menghasilkan0atau1. - Jadi
(n >> i) & 1membaca nilai bit nomori.
The bitwise operators
&(and),|(or),^(xor),~(not) combine numbers bit by bit.<<and>>shift bits left or right. Shifting left by 1 doubles a number.- These are the tools for masks, flags, and low-level tricks.
Operator bitwise
&(dan),|(atau),^(xor),~(tidak) menggabungkan angka bit per bit.<<dan>>menggeser bit ke kiri atau ke kanan. Menggeser ke kiri sebesar 1 melipatgandakan sebuah angka.- Ini adalah alat untuk mask, flag, dan trik tingkat rendah.
#include <stdio.h>
int main(void) {
int n = 20;
for (int i = 7; i >= 0; i--) { // from the highest bit down
printf("%d", (n >> i) & 1);
}
printf("\n"); // 00010100
return 0;
}
Common mistakes
&is bitwise AND and&&is logical AND — do not confuse them.<< 1doubles a value;>> 1halves it.
Kesalahan umum
&adalah bitwise AND dan&&adalah logical AND — jangan bingung将它们混淆它们。<< 1melipatgandakan nilai;>> 1membaginya dua.
Now you try
- Use
(n >> i) & 1to read biti, and a loop to look at every bit. - For
count_bitsandget_bit, the parameter isunsigned int. Do not write amainfor those.
Sekarang Anda coba
- Gunakan
(n >> i) & 1untuk membaca biti, dan loop untuk melihat setiap bit. - Untuk
count_bitsdanget_bit, parameternya adalahunsigned int. Jangan tulismainuntuk itu.
Bitwise operators · Operator bitwise
& | ^ ~ << >> work on each bit of a byte independently. · & | ^ ~ << >> bekerja pada setiap bit byte secara independen.
Complete int count_bits(unsigned int n) so it returns how many bits of n are 1. Use & 1 and >> in a loop. Do not write a main. · Lengkapi int count_bits(unsigned int n) agar mengembalikan berapa banyak bit dari n yang 1. Gunakan & 1 dan >> dalam loop. Jangan tulis sebuah main.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.
Complete int get_bit(unsigned int n, int i) so it returns bit number i of n (0 or 1). Use (n >> i) & 1. Do not write a main. · Lengkapi int get_bit(unsigned int n, int i) agar mengembalikan bit nomor i dari n (0 atau 1). Gunakan (n >> i) & 1. Jangan tulis sebuah main.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.
The byte n is given. In main, print its 8-bit binary form (most significant bit first), then a newline. For 20 that is 00010100. · Byte n diberikan. Di main, cetak bentuk biner 8-bit-nya (bit paling signifikan di depan), lalu baris baru. Untuk 20 bernilai 00010100.
Click Run to see the output here. · Klik Jalankan untuk melihat output di sini.