Walaupun menggunakan 32 bit untuk mewakili nilai integer, julat integer Java berbeza dengan ketara daripada yang terdapat dalam C. Percanggahan ini berpunca daripada cara khusus di mana jenis integer ditakrifkan dan dilaksanakan dalam setiap satu bahasa.
C Perwakilan Integer
Dalam C, perwakilan jenis integer diserahkan kepada sistem asas atau pelaksanaan pengkompil. Biasanya, pada mesin 32-bit, jenis integer (int) menduduki 32 bit. Walau bagaimanapun, julat nilai yang boleh diwakilinya boleh berbeza-beza bergantung pada sama ada ia ditandatangani atau tidak ditandatangani.
Integer yang ditandatangani dalam C menggunakan bit paling ketara (bit paling kiri) untuk menunjukkan tanda daripada nilai. Integer bertandatangan 32-bit boleh mewakili nilai daripada -2,147,483,648 hingga 2,147,483,647.
Integer tidak ditandatangani tidak menggunakan bit yang paling ketara untuk tanda, membenarkan mereka mewakili dalam julat positif yang lebih luas nilai, dari 0 hingga 4,294,967,295.
Perwakilan Integer Java
Tidak seperti C, Java mempunyai peraturan ketat untuk mewakili jenis integer. Semua jenis integer (bait, pendek, int dan panjang) ditandatangani secara lalai, dengan lebar tertentu dikaitkan dengan setiap jenis:
Julat nilai yang setiap jenis boleh mewakili ditentukan oleh lebarnya dan tandatangan:
Ditandatangani:
Tidak Ditandatangani:
Mengapa Julat Berbeza
Perbezaan asas dalam perwakilan integer antara C dan Java berpunca daripada fakta bahawa C membenarkan untuk pendekatan yang lebih fleksibel. Ia menangguhkan butiran pelaksanaan khusus kepada sistem atau pengkompil, memberikan kebebasan yang lebih besar untuk pengoptimuman atau menampung seni bina yang berbeza.Walau bagaimanapun, Java bertujuan untuk mengekalkan konsistensi dan mudah alih merentas platform yang berbeza. Dengan mewajibkan perwakilan khusus untuk jenis integer, ia memastikan bahawa kod yang ditulis untuk satu persekitaran akan berkelakuan boleh diramal dalam semua persekitaran Java yang lain.Atas ialah kandungan terperinci Mengapa Julat Integer Java Berbeza daripada C Walaupun Menggunakan 32 Bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!