Langsung ke konten utama

Bitfield - Menyimpan nilai integer dalam 3 bit memori

/home/cahyana/pro-c/bitfield.c

/**
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

Postingan populer dari blog ini

Instal Freecad di Ubuntu 12.04

Di terminal. $ sudo add-apt-repository ppa:freecad-maintainers/freecad-daily $ sudo apt-get update $ sudo apt-get install freecad freecad-doc http://www.freecadweb.org/

dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)

cahyana@Me:~/Downloads/codeblock$ sudo apt-get install -f Reading package lists... Done Building dependency tree       Reading state information... Done Correcting dependencies... Done The following packages were automatically installed and are no longer required:   libntdb1 libsidplayfp Use 'apt-get autoremove' to remove them. The following extra packages will be installed:   codeblocks-contrib codeblocks-dev Recommended packages:   valgrind The following packages will be upgraded:   codeblocks-contrib codeblocks-dev 2 upgraded, 0 newly installed, 0 to remove and 9 not upgraded. 15 not fully installed or removed. Need to get 3.273 kB of archives. After this operation, 1.711 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://id.archive.ubuntu.com/ubuntu/ trusty/universe codeblocks-dev i386 13.12-3 [350 kB] Get:2 http://id.archive.ubuntu.com/ubuntu/ trusty/universe codeblock...

Install VirtualBox4.3 di Debian 7.8 Wheezy

Langkah-langkahnyasbb: 1. Buka terminal kemudian ketikan perintah berikut: Menambahkan repo virtualbox ke file sources.list $ sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian wheezy contrib" >> /etc/apt/sources.list'  Menambahkan key repo virtualbox agar reponya bisa dipakai. $ wget http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -   Lakukan update $ sudo apt-get update Lakukan install $ sudo apt-get install virtualbox-4.3 virtualbox-dkms