Skillnad mellan signerad och osignerad Skillnad mellan

Anonim

Signed vs Unsigned

Vårt nummersystem sträcker sig från negativ oändlighet till positiv oändlighet med noll höger i mitten. Men i programmeringen finns det i princip två typer av nummer; den signerade och osignerade. Huvudskillnaden mellan ett signerat och ett osignerat nummer är också möjligheten att använda negativa tal. Osignerade nummer kan bara ha värden på noll eller högre. Däremot är signerade siffror mer naturliga med ett intervall som innehåller negativa till positiva tal.

Skapandet av signerade och osignerade nummer uppmanades av behovet att representera numeriska värden med mycket begränsade resurser. Till exempel, med 8 bitar, har du totalt 256 kombinationer. Med ett osignerat nummer betyder det vilket värde som helst mellan 0 och 255. Om du har ett signerat tal betyder det att du redan förlorar lite för att representera tecknet. Med 7 bitar har du maximalt 128 kombinationer, så ditt intervall med ett 8-bitars signerat nummer är från -128 till 127. Så om du har begränsade resurser, som i de tidiga dagarna av beräkningen, var det ojämförligt att använda unsigned numbers.

När du använder signerade och osignerade nummer i programmeringen är det säkrare att bara använda den ena eller den andra, samtidigt som du använder båda kan resultera i problem. Det första är när du jämför en unsigned till ett signerat nummer. Detta resulterar vanligtvis i varningar, men kompilatorn kan sammanställa det ändå. Det andra och allvarligare problemet är när du tilldelar ett unsigned-nummer till ett signerat nummer. Om värdet på det osignerade numret är större än det maximala värdet av det signerade numret, skulle detta resultera i ett fel.

Eftersom tekniken har utvecklats har resurser blivit rikligare och användningen av osignerade nummer blir mindre och mindre nödvändig. För att illustrera detta, kom ihåg att ett 32 bit långt antal kan ha ett tecknat maximalt värde på 2 miljoner eller 4 miljoner om det är osignerat. När du flyttar in i 64 bitar är skillnaden mellan 90 och 180 quintillion; värden som sällan används om alls i vanliga program.

Sammanfattning:

1. Otignerat nummer inkluderar bara noll och positivt tal medan signerade nummer inkluderar negativa tal.

2. Tecknade nummer har hälften av det maximala värdet av osignerade nummer.

3. Att blanda signerade och osignerade nummer kan leda till problem.

4. Användning av signerade eller osignerade nummer har lite lager i moderna applikationer.