Lompat ke konten Lompat ke sidebar Lompat ke footer

Tipe Data Long Bahasa C Beserta Fungsi dan Perbedaan Kebutuhannya

Tipe data long dalam Bahasa C digunakan untuk menyimpan nilai bulat (integer) yang memiliki rentang lebih besar daripada tipe data int. Dalam artikel ini, akan dipelajari konsep tipe data long, ukuran memori yang terlibat, dan situasi di mana penggunaannya menjadi relevan.

Sebelum lebih lanjut mempelajari materi tentang Tipe Data Long Bahasa C Beserta Fungsi dan Perbedaan Kebutuhannya, terlebih dahulu pelajari materi tentang: Variabel Dua Pilihan pada Bahasa C Menggunakan Bool, Integer Promotion Bahasa C dan Fungsinya, dan Perbandingan Nilai Float Bahasa C Terhadap Nilai Lainnya.

Pada bahasa C dan C++, terdapat empat tipe data berbeda yang tersedia untuk menampun nilai integer, yaitu, shortintlong, dan long long. Setiap tipe data tersebut membutuhkan jumlah alokasi memori yang berbeda.

Tetapi terdapat sebuah perbedaan, dimana tipe data long adalah tipe data yang tidak cocok dengan tipe data lainnya. Tipe data long memiliki variasi dari segi arsitektur, sistem operasi, dan bahkan dengan kompilator yang digunakan. Pada beberapa sistem tipe data long akan bersifat seperti tipe data int atau long long seperti berikut ini:
  • OS                 Architecture                  Size
  • Windows       IA-32                               4 bytes
  • Windows       Intel® 64 or IA-64        4 bytes
  • Linux             IA-32                               4 bytes
  • Linux             Intel® 64 or IA-64        8 bytes
  • Mac OS X     IA-32                               4 bytes
  • Mac OS X     Intel® 64 or IA-64        8 bytes

Namun hal tersebut tetap bervariasi tergantung dari kompilator yang digunakan. Namun, sebelum memahami hal tersebut, terlebih dahulu pahami beberapa konsep tentang cross compiler.

Kompilator silang atau cross compiler adalah kompilator yang mampu menciptakan kode eksekusi dari platform lain ketika kompilator sedang dijalankan. Sebagai contoh, jika dilakukan kompilasi program pada arsitektur komputer 64 bit pada Ubuntu maka akan menghasilkan program sebagai berikut.

Contoh:

// Kebutuhan tipe data long

// pada bahasa C dan C++

 

// Program bahasa C untuk

// memeriksa ukuran dari

// tipe data 'long'

 

// tipe data

#include<stdio.h>

 

int main()

{

printf("Ukuran dari int ="

" %ld\n", sizeof(int));

 

printf("Ukuran dari long ="

" %ld\n", sizeof(long));

 

printf("Ukurand dari long long ="

" %ld", sizeof(long long));

}

Output in 32 bit gcc compiler:
Ukuran dari int = 4
Ukukran dari long = 4
Ukuran dari long long = 8

Output in 64 bit gcc compiler:
Ukuran dari int = 4
Ukuran dari long = 8
Ukuran dari long long = 8

Dari contoh program tersebut disimpulkan bahwa ukuran dari tipe data long bervariasi tergantung dari tipe kompilator yang digunakan untuk melakukan kompilasi program.

CPU memanggil data dari RAM dengan memberikan alamat dari lokasi menuju MAR (Memory Address Register). Ketika lokasi telah ditemukan maka data akan dikirim menuju MDR (Memory Data Register). Data tersebut akan disimpan dari Register pada Processor untuk proses tahap lanjut. Hal ini lah yang menentukan kenapa Data BUS menentukan ukuran dari Register pada prosesor. Sekarang, pada register 32 bit akan dipanggil data dengan ukuran 4byte saja, pada waktu bersamaan. Dan jika ukuran data melebihi 32 bit, maka akan membutuhkan dua kali pengambilan berulang untuk bisa mendapatkan data tersebut. Hal ini akan memperlambat kecepatan dari mesin 32 bit dibanding dengan 64bit, yang dapat menyelesaikan operasi dalam satu kali pengambilan data saja. Sehingga untuk ukuran data yang lebih kecil, tidak akan membuat perbedaan jika prosesor melakukan clock pada kecepatan yang sama. Kompilator dirancang untuk melakukan generate kode yang paling efisien untuk target mesin arsitektur tertentu.

Sehingga, ukuran sebuah variabel bergantung pada kompilator masing-masing yang digunakan untuk mengkompilasi program, karena kompilator hanya menghasilkan istruksi berdasarkan arsitektur target dan arsitektur sistem yang berkaitan dengan ukuran bus data dan transfernya.

Baca Juga:

Pengenalan Tipe Data Long

Tipe data long adalah salah satu tipe data integer yang menyimpan bilangan bulat. Namun, tipe data ini menawarkan rentang nilai yang lebih besar daripada tipe data int. Representasi memori dan ukuran long dapat berbeda tergantung pada sistem dan kompiler yang digunakan.

Sintak: long nilaiPanjang = 1234567890L;

Ukuran Memori Tipe Data Long

Ukuran memori yang dialokasikan untuk tipe data long bisa berbeda tergantung pada platform dan kompiler. Umumnya, tipe data long memiliki ukuran yang setidaknya sama dengan tipe data int, dan pada banyak sistem, ukurannya adalah 4 byte atau 8 byte.

Contoh:

#include <stdio.h>

int main() {

printf("Ukuran tipe data long:

 %lu byte\n", sizeof(long));

return 0;}


Rentang Nilai Tipe Data Long

Tipe data long memiliki rentang nilai yang lebih besar dibandingkan dengan tipe data int. Jangkauan nilai dapat bervariasi tergantung pada sistem, tetapi tipe data long harus dapat menyimpan setidaknya nilai yang sama besar dengan tipe data int.

Sintak: long nilaiPanjang = 2147483648L;  // Contoh nilai di luar rentang tipe data int

Penggunaan Tipe Data Long

Tipe data long berguna ketika diperlukan untuk proses penyimpanan nilai yang melebihi rentang yang dapat ditampung oleh tipe data int. Situasi umum penggunaannya termasuk:
  • Penanganan besar nilai bilangan bulat.
  • Perhitungan yang melibatkan angka yang sangat besar atau sangat kecil.
  • Saat bekerja dengan data yang memerlukan presisi tinggi.

Sintak: long saldoRekening = 1500000000L;

Penukaran dan Penggunaan Literal Long

Untuk memastikan literal diinterpretasikan sebagai tipe data long, pengembang dapat menambahkan akhiran 'L' atau 'l'.

Sintak: long nilaiPanjang = 1234567890L;

Overflows pada Tipe Data Long

Meskipun tipe data long memiliki rentang yang lebih besar, tetap penting untuk memahami bahwa overflows dapat terjadi ketika nilai yang dimasukkan melampaui kapasitas tipe data tersebut.

Sintak: 
long nilaiPanjang = 9223372036854775807L;  // Nilai maksimum tipe data long
nilaiPanjang = nilaiPanjang + 1;  // Overflows terjadi di sini

Kombinasi Format Specifier untuk printf

Ketika mencetak nilai tipe data long dengan printf, pengembang dapat menggunakan format specifier %ld.

Sintak:
long nilaiPanjang = 1234567890L;
printf("Nilai tipe data long: %ld\n", nilaiPanjang);

Catatan: Jika memiliki tipe integer dengan ukuran yang sama pada semua platform adalah hal yang penting, maka sebaiknya mengganti tipe data long menjadi int atau long long. Karena ukuran dari tipe data int adalah 4byte dan ukuran dari long long adalah 8byte untuk semua kombinasi sistem operasi, arsitektur, dan kompilator.

Kelebihan tipe data long dalam Bahasa C melibatkan kapasitas penyimpanan yang lebih besar dan rentang nilai yang lebih luas dibandingkan tipe data int. Berikut adalah beberapa kelebihannya:
  • Rentang Nilai yang Lebih Besar: Tipe data long menyediakan rentang nilai yang lebih besar daripada tipe data int. Ini memungkinkan programmer untuk menyimpan nilai yang jauh lebih besar atau lebih kecil tanpa kekhawatiran overflow atau underflow.
  • Penanganan Data yang Besar: Tipe data long berguna ketika perlu untuk menangani data yang sangat besar, seperti dalam perhitungan keuangan, ilmu pengetahuan, atau aplikasi yang melibatkan angka dengan magnitude yang tinggi.
  • Presisi yang Lebih Tinggi: Dengan ukuran memori yang lebih besar, tipe data long dapat digunakan untuk meningkatkan presisi dalam perhitungan matematis. Ini bermanfaat ketika akurasi tinggi diperlukan, seperti dalam pengolahan data ilmiah atau perhitungan fisika.
  • Penggunaan Saat Memori Lebih Tidak Masalah: Ketika memori tidak terlalu berharga dan aplikasi memerlukan penyimpanan nilai dengan rentang yang besar, menggunakan tipe data long dapat menjadi pilihan yang baik.
  • Penanganan Tanggal dan Waktu: Tipe data long dapat berguna dalam menyimpan nilai tanggal dan waktu yang besar, terutama ketika bekerja dengan format tanggal dan waktu yang lebih presisi, seperti Unix timestamps. Sintak: long timestamp = 1646214000L;  // Representasi waktu 02 Maret 2022, 12:00:00 UTC
  • Kompatibilitas Dengan API Eksternal: Beberapa API eksternal atau library dapat menggunakan tipe data long untuk menyimpan nilai tertentu. Penggunaan tipe data long dapat memudahkan integrasi dengan API atau fungsi eksternal yang memerlukan jenis data ini.
  • Toleransi Terhadap Overflows: Dengan rentang nilai yang lebih besar, tipe data long memberikan toleransi yang lebih tinggi terhadap kemungkinan overflow dalam operasi aritmetika. Hal ini dapat membantu mencegah kehilangan data yang mungkin terjadi pada tipe data integer yang lebih kecil.
  • Fleksibilitas dalam Penulisan Kode: Tipe data long memberikan fleksibilitas dalam penulisan kode, memungkinkan programmer untuk memilih tipe data yang paling sesuai dengan kebutuhan spesifik aplikasi atau algoritma.

Pemahaman yang baik tentang kelebihan tipe data long memungkinkan programmer untuk membuat keputusan yang tepat saat memilih tipe data untuk mengatasi kebutuhan penyimpanan dan presisi dalam program komputer.

Kesimpulan

Tipe data long dalam Bahasa C menyediakan fleksibilitas tambahan dalam menyimpan nilai bulat yang memiliki rentang lebih besar daripada tipe data int. Pemahaman tentang ukuran memori, rentang nilai, dan situasi di mana tipe data long berguna membantu programmer dalam membuat keputusan tentang tipe data yang paling sesuai untuk kebutuhan pengembangan. Dengan menggunakan tipe data long dengan bijak, pengembang dapat mengatasi batasan rentang yang dimiliki oleh tipe data integer yang lebih kecil.

Referensi Tambahan:

Artikel ini didedikasikan kepada: Hardiansyah Rochani, Indarisha Nurfaizah, Latiful Umam, Lindha Ambar Cahyaningrum, dan Lutfi Dwi Yulianti.

6 komentar untuk "Tipe Data Long Bahasa C Beserta Fungsi dan Perbedaan Kebutuhannya"

  1. Menurut sara penggunaan bahasa C memang lebih baik untuk program-program yang memang membutuhkan kapasitas penyimpanan dalam jumlah kecil, seperti arduino dan mikrokontroler lainnya.

    BalasHapus
    Balasan
    1. Untuk pemrograman yang membutuhkan ruang penyimpanan atau ram dalam skala besar sebaiknya memang sudah tidak menggunakan program dalam bahasa C,

      Hapus
  2. Ngapain juga buat aplikasi sekala besar masih pake pemrograman berbasis skrip, pake yang sudah OOP dong biar bisa mengembangkan GUI

    BalasHapus
  3. Sebenarnya tidak bisa dikatakan untuk beberapa bahasa pemrograman yang masih berbasis skrip sudah ketinggalan jaman, soalnya dalam pengembangan suatu sistem tetap saja ada bentuk permasalahan yang memang lebih mengutamakan kecepatan daripada kenyamanan tampilan,

    contohnya, program untuk pengembangan jaringan.

    BalasHapus
  4. Contoh nya hacker bro, sebagian besar dari mereka masig mengembangan aplikasi yang berbasis script soalnya lebih ringant, dan memang sebagian besar aplikasi yang dikembangkan memang lebih fokus pada kecepatan akses dan hasil daripada kenyamanan pengguna.

    BalasHapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -