Perbezaan antara yang ditandatangani dan tidak ditandatangani

Perbezaan antara yang ditandatangani dan tidak ditandatangani

Ditandatangani vs unsigned

Sistem nombor kami meluas dari tak terhingga negatif ke tak terhingga positif dengan sifar tepat di tengah. Walau bagaimanapun, dalam pengaturcaraan, pada dasarnya terdapat dua jenis nombor; yang ditandatangani dan tidak ditandatangani. Perbezaan utama antara nombor yang ditandatangani dan tidak ditandatangani adalah, dengan baik, keupayaan untuk menggunakan nombor negatif. Nombor yang tidak ditandatangani hanya boleh mempunyai nilai sifar atau lebih besar. Sebaliknya, nombor yang ditandatangani lebih semula jadi dengan julat yang termasuk negatif kepada nombor positif.

Penciptaan nombor yang ditandatangani dan tidak ditandatangani diminta oleh keperluan untuk mewakili nilai angka dengan sumber yang sangat terhad. Contohnya, menggunakan 8 bit, anda hanya mempunyai sebanyak 256 kombinasi. Dengan nombor yang tidak ditandatangani, ini bermakna nilai antara 0 dan 255. Sebaliknya, mempunyai nombor yang ditandatangani bermakna anda sudah kehilangan sedikit untuk mewakili tanda. Dengan 7 bit anda mempunyai maksimum 128 kombinasi sehingga julat anda dengan nombor 8 bit yang ditandatangani dari -128 hingga 127. Oleh itu, jika anda mempunyai sumber yang terhad, seperti pada hari -hari awal pengkomputeran, menggunakan nombor yang tidak ditandatangani adalah cara untuk pergi.

Apabila menggunakan nombor yang ditandatangani dan tidak ditandatangani dalam pengaturcaraan, lebih selamat hanya menggunakan satu atau yang lain secara serentak menggunakan kedua -duanya boleh mengakibatkan masalah. Yang pertama adalah ketika anda membandingkan yang tidak ditandatangani dengan nombor yang ditandatangani. Ini biasanya menghasilkan amaran, tetapi pengkompil dapat menyusunnya. Masalah kedua dan lebih serius adalah apabila anda memberikan kandungan nombor yang tidak ditandatangani ke nombor yang ditandatangani. Sekiranya nilai nombor yang tidak ditandatangani lebih besar daripada nilai maksimum nombor yang ditandatangani, ini akan mengakibatkan ralat.

Apabila teknologi dibangunkan, sumber telah menjadi lebih banyak, dan penggunaan nombor yang tidak ditandatangani menjadi kurang dan kurang diperlukan. Untuk menggambarkan ini, perlu diingat bahawa bilangan panjang 32 bit boleh mempunyai nilai maksimum yang ditandatangani sebanyak 2 juta atau 4 juta jika tidak ditandatangani. Apabila anda bergerak ke 64 bit, perbezaannya adalah antara 90 dan 180 quintillion; Nilai yang jarang digunakan sekiranya dalam program biasa.

Ringkasan:

1.Nombor yang tidak ditandatangani hanya termasuk sifar dan nombor positif manakala nombor yang ditandatangani termasuk nombor negatif.
2.Nombor yang ditandatangani mempunyai separuh nilai maksimum nombor yang tidak ditandatangani.
3.Pencampuran nombor yang ditandatangani dan tidak ditandatangani dapat mengakibatkan masalah.
4.Menggunakan nombor yang ditandatangani atau tidak ditandatangani mempunyai sedikit kesan dalam aplikasi moden.