/**
Type: Bitfield Program | menggukan tiga bit untuk menyimpan nilai integer antara 1-7
Keluaran: \
Sizeof bitfield: 4
Umur3 = 3
Umur7 = 7
Umur8 = 0
Umur15 = 7
Penjelasan:
Jika kita menggukan 3 bit untuk menyimpan bilangan integer maka kita dapat
menyimpan dari angka 1-7. Dimana jika digambarkan dalam biner menjadi:
Bilangan | Biner
---------------------
1 | 0 0 1
2 | 0 1 0
3 | 0 1 1
4 | 1 0 0
5 | 1 0 1
6 | 1 1 0
7 | 1 1 1
Setiap bit mewakili bilangan basis dua yaitu:
4 2 1
Jika ketiga angka itu dijumlahkan akan didapatkan hasil 7. Itulah sebabnya
mengapa nilai terbesar dari tiga bit adalah 7. Jika kita ingin menulis angka
5 dalam biner kita hanya perlu menjumlah angka 4 dan 1. Berarti kita hanya
menggukan dua bit dari ketiga bit diatas. Angka yang terpakai untuk dijumlahkan
dalam biner diwakili dengan 1 dan angka yang tidak terpakai diwakili dengan 0
sehingga dapat ditulis:
Pola 3 bit: 4 2 1
-----------------------
5 = 4 1
atau
5 = 4 + 0 + 1
atau
5 = 1 0 1
Begitu juga jika kita ingin menulis angka 6 dalam biner maka kita dapat menjumlah
angka 4 dan 2 sehingga dapat ditulis:
Pola 3 bit: 4 2 1
-----------------------
6 = 4 2
atau
6 = 4 + 2 + 0
atau
6 = 1 1 0
-----
Umur15 = 7
-----
Pada program ini saya menempatkan nilai 15 dalam tiga bit dan menghasilkan bilangan 7
ini disebabkan karena untuk menyimpan nilai 15 kita membutuhkan ruang 4 bit memori yaitu:
Pola 4 bit: 8 4 2 1
-------------------------------
15 = 8 4 2 1
atau
15 = 8 + 4 + 2 + 1
atau
15 = 1 1 1 1
Sedangkan pada program ini kita hanya menggunakan 3 bit ruang memori saja sehingga nilai
yang ditampilan hanyalah nilai yang terdapat dari 3 bit saja yaitu 111 atau 4+2+1=7.
*/
#include <stdio.h>
struct {
unsigned int umur:3;
} Umur;
int main()
{
printf("Sizeof bitfield: %d\n", sizeof(Umur));
Umur.umur = 3;
printf("Umur3 = %d\n", Umur.umur);
Umur.umur = 7;
printf("Umur7 = %d\n", Umur.umur);
Umur.umur = 8;
printf("Umur8 = %d\n", Umur.umur);
Umur.umur = 15;
printf("Umur15 = %d\n", Umur.umur);
return 0;
}
Komentar
Posting Komentar