ความแตกต่างระหว่าง Signed และ Unsigned ความแตกต่างระหว่าง

Anonim

ลงนามและไม่ได้ลงชื่อ

ระบบจำนวนของเราขยายจากอินฟินิตี้เชิงลบไปเป็นอินฟินิตี้บวกกับศูนย์ตรงกลาง อย่างไรก็ตามในการเขียนโปรแกรมมีสองประเภทคือตัวเลข; ลงนามและไม่ได้ลงชื่อ ความแตกต่างหลักระหว่างหมายเลขที่ลงชื่อและหมายเลขที่ไม่ได้ลงชื่อคือความสามารถในการใช้ตัวเลขเชิงลบ หมายเลขที่ไม่ได้ลงนามสามารถมีค่าเป็นศูนย์หรือมากกว่าเท่านั้น ในทางตรงกันข้ามตัวเลขที่ลงนามเป็นธรรมชาติมากขึ้นโดยมีช่วงที่มีจำนวนลบเป็นบวก

การสร้างตัวเลขที่ลงนามและไม่ได้ลงนามได้รับแจ้งโดยต้องระบุค่าตัวเลขที่มีทรัพยากร จำกัด มาก ตัวอย่างเช่นการใช้ 8 บิตมีเพียง 256 ชุดเท่านั้น มีตัวเลขที่ไม่ได้ลงชื่อหมายความว่าค่าใด ๆ ระหว่าง 0 ถึง 255 ตรงกันข้ามการมีเลขที่ลงนามหมายความว่าคุณสูญเสียบิตไปแล้วสำหรับการแสดงเครื่องหมาย ด้วย 7 บิตคุณมีชุดค่าผสมสูงสุด 128 ชุดเพื่อให้ช่วงของคุณมีหมายเลขที่มีการเซ็นชื่อ 8 บิตอยู่ระหว่าง -128 ถึง 127 ดังนั้นถ้าคุณมีทรัพยากรที่ จำกัด เช่นในวันแรก ๆ ของการใช้คอมพิวเตอร์ตัวเลขที่ไม่ได้ลงชื่อก็เป็นไปในทิศทางเดียวกัน

เมื่อใช้ตัวเลขที่ลงชื่อและไม่ได้ลงนามในการเขียนโปรแกรมจะปลอดภัยกว่าเมื่อใช้เพียงอย่างใดอย่างหนึ่งหรือทั้งสองอย่างพร้อมกันโดยใช้ทั้งสองอย่างอาจทำให้เกิดปัญหาได้ อันดับแรกคือเมื่อคุณเปรียบเทียบเครื่องหมายที่ไม่ได้ลงนามกับหมายเลขที่ลงนาม นี้มักจะส่งผลให้คำเตือน แต่คอมไพเลอร์สามารถรวบรวมได้ต่อไป ปัญหาที่สองและที่สำคัญมากคือเมื่อคุณกำหนดเนื้อหาของหมายเลขที่ไม่ได้ลงนามให้กับหมายเลขที่ลงนาม ถ้าค่าของจำนวนที่ไม่ได้ลงนามมากกว่าค่าสูงสุดของจำนวนที่ลงลายมือจะทำให้เกิดข้อผิดพลาด

เมื่อเทคโนโลยีมีการพัฒนาทรัพยากรมีมากขึ้นและการใช้ตัวเลขที่ไม่ได้ลงชื่อกลายเป็นความจำเป็นน้อยลงและน้อยลง เพื่อเป็นการแสดงให้เห็นว่าโปรดจำไว้ว่าหมายเลขที่ยาว 32 บิตสามารถมีค่าเซ็นชื่อสูงสุดได้ 2 ล้านหรือ 4 ล้านหากยังไม่ได้ลงชื่อ เมื่อคุณย้ายไปเป็น 64 บิตความแตกต่างระหว่าง 90 ถึง 180 quintillion; ค่าที่ไม่ค่อยได้ใช้ถ้าอยู่ในโปรแกรมทั่วไป

สรุป:

1. หมายเลขที่ไม่ได้ลงนามเพียง แต่มีตัวเลขเป็นศูนย์และบวกในขณะที่หมายเลขที่ลงนามรวมถึงตัวเลขที่เป็นค่าลบ

2 หมายเลขที่ลงนามมีจำนวนสูงสุดไม่เกินจำนวนครึ่งหนึ่งของจำนวนที่ไม่ได้ลงชื่อ

3 การผสมหมายเลขที่ลงนามและไม่ได้ลงนามอาจทำให้เกิดปัญหาได้

4 การใช้ตัวเลขที่ลงนามหรือไม่ได้ลงนามมีน้อยในการใช้งานที่ทันสมัย