Rotasi Bit pada Angka II
Pelajaran 13 dari 17 dalam kursus Manipulasi Bit di Coddy.
Baik! Kamu sudah memahami arti rotasi. Namun, dalam kasus ini, rotasi juga bisa dipahami dengan menggunakan operasi shift. Kita juga bisa mengatakan bahwa merotasi bilangan biner sama seperti melakukan operasi shift pada bilangan tersebut, tetapi alih-alih membuang bit, kita menempatkannya kembali ke dalam bilangan. Mari kita pahami dengan sebuah contoh:
Misalkan kita memiliki (33)10 di komputer 8-bit. Bilangan itu akan disimpan sebagai (00100001)2, jika kita merotasinya ke kiri sebanyak 3 kali.
- Pertama, kita menggeser (33)10 ke kiri sebanyak 3 kali.
- Untuk menyimpan bit yang keluar, kita menggesernya ke kanan sebanyak 8-3 kali. (8 adalah jumlah bit yang digunakan komputer untuk menempatkan bilangan di memori)
- Kemudian, kita melakukan operasi OR pada x dan y untuk mendapatkan bilangan hasil rotasi.
| x = 33<<3 | 00001000 |
| y = 33>>5 | 00000001 |
x | y | 00001001 |
Dengan cara yang sama, kita bisa melakukan rotasi ke kanan:
- Pertama, kita menggeser (33)10 ke kanan sebanyak 3 kali dan menyimpan nilai itu dalam variabel.
- Kemudian, kita menggesernya ke kiri sebanyak (8-3) kali dan menyimpan nilai itu dalam variabel lain.
- Kemudian, dengan melakukan operasi OR, kita akan mendapatkan bilangan hasil rotasi.
| x = 33 >> 3 | 00000100 |
| y = 33 << 5 | 00100000 |
x | y | 00100100 |
Selesai! Kita bisa merotasi bit dalam bilangan biner dengan mudah berkat manipulasi bit.
Tantangan
SedangLengkapi fungsi SumLeftRightRotation() agar mengembalikan jumlah nilai rotasi kiri dan rotasi kanan dari bilangan yang diberikan.
Misalnya, untuk bilangan 20, setelah rotasi kiri hasilnya 40, dan setelah rotasi kanan hasilnya 10, sehingga output-nya adalah 50, yaitu jumlah rotasi kiri dan rotasi kanan.
Di sini, num mewakili bilangan dan r mewakili jumlah rotasi.
Coba sendiri
#define INT_BITS 32
using namespace std;
int SumLeftRightRotation(int num, int r) {
// Tulis kodemu di sini
}Semua pelajaran di Manipulasi Bit
2Algoritma Bit
Pangkat 2Angka yang Muncul Ganjil KaliJumlah Bit Bernilai 1Rotasi Bit pada Angka IRotasi Bit pada Angka IILatihan sendiri: Compiler C++ online
Periksa konversi: Konverter Basis Bilangan