Tipe data kadang harus dipilih dengan benar agar, efisiensi memori dapat tercapai. Pemilihannya tergantung pada kemungkinan nilai terkecil dan terbesar yang akan muncul saat program berjalan / runtime.
Sementara itu, bahasa C memiliki beberapa tipe data standar untuk menyimpan bilangan berjenis integer / bilangan bulat.
Sumber : https://www.tutorialspoint.com/cprogramming/c_data_types.htm
Tidak ada yang aneh dengan semua tipe data pada tabel di atas, kecuali INT dan LONG yang memiliki ukuran penyimpanan sama (4 bytes). Anehnya lagi, referensi juga bisa mengatakan bahwa INT bisa berukuran serupa SHORT (2 byte). Bagaimana? dan; Mengapa?
Mengenai keanehan kedua, tidak perlu dikhawatirkan lagi. Ukuran INT hanya 2 byte saat masih banyak prosesor 16-bit bertebaran. Sementara sekarang, 32-bit kian menguasai pasar, sehingga hampir dapat dipastikan bahwa INT selalu berukuran 4 byte.
Sebenarnya, dari semua type data di atas; ketentuan value range merupakan ketentuan yang di atur oleh standarisasi C. Meski pada umumnya INT berukuran 4 byte di prosesor 32-bit, ukurannya bisa berbeda jika program dicompile dengan compiler atau arsitektur prosesor lain. Misalnya, banyak yang mengatakan INT dapat menampung data antara -2,147,483,648 hingga 2,147,483,647. Namun itu bukan berarti INT selalu berukuran 4 byte. Compiler bisa memilih 4 byte, 8 byte, bahkan 16 byte; selama mungkin dilakukan dan ukuran byte tersebut mampu menampung data antara -2,147,483,648 hingga 2,147,483,647.
Pernyataan di atas semakin diperkuan dengan referensi yang penulis peroleh dari Wikipedia; bahwa, ukuran byte dari tipe data dapat bervariasi pada implementasinya. Jadi, hati-hati saat menggunakan tipe data antara INT dan LONG. Menurut standarisasi bahasa C, keduanya dianjurkan agar dapat menampung data antara -2,147,483,648 hingga 2,147,483,647. Sehingga umumnya variabel ini sama-sama berukuran 4-byte. Namun, kadang tipe LONG bisa berukuran 4 byte saat program dicompile pada prosesor 64-bit.
Sebagai contoh kasus, saya menemukan referensinya dari sini, katanya :
For 32-bit systems, the 'de facto' standard is ILP32 — that is, int, long and pointer are all 32-bit quantities.
For 64-bit systems, the primary Unix 'de facto' standard is LP64 — long and pointer are 64-bit (but int is 32-bit). The Windows 64-bit standard is LLP64 — long long and pointer are 64-bit (but long and int are both 32-bit).
Lalu apa?
Saran dari saya, jika anda sangat mementingkan efisiensi penyimpanan data dan anda ingin menyimpan data antara -2,147,483,648 hingga 2,147,483,647; gunakan tipe INT, karena secara umum implementasinya selalu menggunakan variabel berukuran 4 byte.
Apa pentingnya?
Anda mungkin belum menduga betapa pentingnya hal ini. Beberapa project yang saya kerjakan adalah poject open source, tentu saja harus ada jaminan kode ini bisa dicompile rang lain. Beberapa implementasi kode harus mengikuti dokumen standar yang telah ditetapkan. Seringnya, dokumen mengatakan secara implisit bahwa tipe data yang harus digunakan berukuran 4 byte. Nah, jika menemukan hal demikian INT adalah yang sesuai untuk dipakai, karena meski ukuran LONG di compiler saya 4 byte, ukurannya bisa berlainan di komputer atau compiler lain.
Sementara itu, bahasa C memiliki beberapa tipe data standar untuk menyimpan bilangan berjenis integer / bilangan bulat.
Type | Storage size | Value range |
---|---|---|
char | 1 byte | -128 to 127 or 0 to 255 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned int | 2 or 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 |
short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
long | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
Tidak ada yang aneh dengan semua tipe data pada tabel di atas, kecuali INT dan LONG yang memiliki ukuran penyimpanan sama (4 bytes). Anehnya lagi, referensi juga bisa mengatakan bahwa INT bisa berukuran serupa SHORT (2 byte). Bagaimana? dan; Mengapa?
Mengenai keanehan kedua, tidak perlu dikhawatirkan lagi. Ukuran INT hanya 2 byte saat masih banyak prosesor 16-bit bertebaran. Sementara sekarang, 32-bit kian menguasai pasar, sehingga hampir dapat dipastikan bahwa INT selalu berukuran 4 byte.
Sebenarnya, dari semua type data di atas; ketentuan value range merupakan ketentuan yang di atur oleh standarisasi C. Meski pada umumnya INT berukuran 4 byte di prosesor 32-bit, ukurannya bisa berbeda jika program dicompile dengan compiler atau arsitektur prosesor lain. Misalnya, banyak yang mengatakan INT dapat menampung data antara -2,147,483,648 hingga 2,147,483,647. Namun itu bukan berarti INT selalu berukuran 4 byte. Compiler bisa memilih 4 byte, 8 byte, bahkan 16 byte; selama mungkin dilakukan dan ukuran byte tersebut mampu menampung data antara -2,147,483,648 hingga 2,147,483,647.
Pernyataan di atas semakin diperkuan dengan referensi yang penulis peroleh dari Wikipedia; bahwa, ukuran byte dari tipe data dapat bervariasi pada implementasinya. Jadi, hati-hati saat menggunakan tipe data antara INT dan LONG. Menurut standarisasi bahasa C, keduanya dianjurkan agar dapat menampung data antara -2,147,483,648 hingga 2,147,483,647. Sehingga umumnya variabel ini sama-sama berukuran 4-byte. Namun, kadang tipe LONG bisa berukuran 4 byte saat program dicompile pada prosesor 64-bit.
Sebagai contoh kasus, saya menemukan referensinya dari sini, katanya :
For 32-bit systems, the 'de facto' standard is ILP32 — that is, int, long and pointer are all 32-bit quantities.
For 64-bit systems, the primary Unix 'de facto' standard is LP64 — long and pointer are 64-bit (but int is 32-bit). The Windows 64-bit standard is LLP64 — long long and pointer are 64-bit (but long and int are both 32-bit).
Lalu apa?
Saran dari saya, jika anda sangat mementingkan efisiensi penyimpanan data dan anda ingin menyimpan data antara -2,147,483,648 hingga 2,147,483,647; gunakan tipe INT, karena secara umum implementasinya selalu menggunakan variabel berukuran 4 byte.
Apa pentingnya?
Anda mungkin belum menduga betapa pentingnya hal ini. Beberapa project yang saya kerjakan adalah poject open source, tentu saja harus ada jaminan kode ini bisa dicompile rang lain. Beberapa implementasi kode harus mengikuti dokumen standar yang telah ditetapkan. Seringnya, dokumen mengatakan secara implisit bahwa tipe data yang harus digunakan berukuran 4 byte. Nah, jika menemukan hal demikian INT adalah yang sesuai untuk dipakai, karena meski ukuran LONG di compiler saya 4 byte, ukurannya bisa berlainan di komputer atau compiler lain.
0 comments