Perbezaan Antara Ditandatangani dan Unsigned

Ditandatangani vs Unsigned

Sistem nombor kami memanjangkan daripada infiniti negatif kepada tak terhingga positif dengan hak sifar di tengah. Walau bagaimanapun, dalam pengaturcaraan, terdapat pada dasarnya dua jenis nombor; yang ditandatangani dan tidak ditandatangani. Perbezaan utama antara nombor yang ditandatangani dan tidak ditandatangani adalah, dengan kemampuan untuk menggunakan nombor negatif. Nombor unsigned hanya boleh mempunyai nilai sifar atau lebih tinggi. Sebaliknya, nombor yang ditandatangani lebih semula jadi dengan julat yang termasuk negatif kepada nombor positif.

Penciptaan nombor yang ditandatangani dan tidak ditandatangani digesa oleh keperluan untuk mewakili nilai numerik dengan sumber yang sangat terhad. Sebagai contoh, menggunakan 8 bit, anda hanya mempunyai sejumlah 256 kombinasi. Dengan nombor yang tidak ditandatangani, itu bermakna sebarang nilai antara 0 dan 255. Sebaliknya, mempunyai nombor yang ditandakan bermakna anda sudah kehilangan sedikit untuk mewakili tanda. Dengan 7 bit anda mempunyai maksimum 128 kombinasi jadi julat anda dengan nombor 8 bit yang ditandatangani adalah dari -128 hingga 127. Jadi 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, ia adalah lebih selamat untuk hanya menggunakan satu atau yang lain secara serentak menggunakan kedua-duanya boleh menyebabkan masalah. Yang pertama adalah apabila anda membandingkan unsigned ke nombor yang ditandatangani. Ini biasanya menghasilkan amaran, tetapi pengkompil boleh menyusunnya pula. Masalah kedua dan lebih serius adalah apabila anda menyerahkan kandungan nombor yang tidak ditandatangani kepada nombor yang ditandatangani. Jika nilai nombor unsigned lebih besar daripada nilai maksimum nombor yang ditandatangani, ini akan mengakibatkan ralat.

Apabila teknologi dibangunkan, sumber menjadi lebih banyak, dan penggunaan nombor yang tidak ditandatangani semakin kurang dan kurang diperlukan. Untuk menggambarkan ini, perlu diingat bahawa nombor panjang 32 bit boleh mempunyai nilai maksimum yang ditandatangani sebanyak 2 juta atau 4 juta jika ia tidak ditandatangani. Apabila anda berpindah ke 64 bit, perbezaan antara 90 dan 180 quintillion; nilai-nilai yang jarang digunakan jika dalam semua program biasa.

Ringkasan:

1. Nombor yang ditandatangani hanya termasuk sifar dan nombor positif manakala nombor yang ditandatangani termasuk nombor negatif.
2. Nombor yang ditandatangani mempunyai separuh nilai maksimum nombor unsigned.
3.Mixing ditandatangani dan nombor tidak ditandatangani boleh menyebabkan masalah.
4. Menggunakan nombor yang ditandatangani atau tidak ditandatangani tidak banyak memberi kesan kepada aplikasi moden.