Signatur - Signedness

I databehandling er signatur en egenskap av datatyper som representerer tall i dataprogrammer. En numerisk variabel signeres hvis den kan representere både positive og negative tall, og usignert hvis den bare kan representere ikke-negative tall (null eller positive tall).

Siden signerte tall kan representere negative tall, mister de en rekke positive tall som bare kan representeres med usignerte tall av samme størrelse (i biter) fordi omtrent halvparten av de mulige verdiene er ikke-positive verdier, mens den respektive usignerte typen kan dedikere alle mulige verdier til det positive tallområdet.

For eksempel kan et tos komplement signert 16-bits heltall holde verdiene −32768 til 32767 inklusivt, mens et usignert 16-bits heltall kan holde verdiene 0 til 65535 . For denne tegnrepresentasjonsmetoden angir den bit (venstre mest ) som er lengst til venstre om verdien er positiv eller negativ (0 for positiv, 1 for negativ).

I programmeringsspråk

For de fleste arkitekturer er det ingen signert - usignert typeskillelse på maskinspråket . Likevel setter regneinstruksjoner vanligvis forskjellige CPU -flagg, for eksempel bæreflagget for usignert regning og overløpsflagget for signert. Disse verdiene kan tas i betraktning ved påfølgende gren- eller aritmetiske kommandoer.

Den programmeringsspråket C , sammen med dets derivater, implementerer en signerings for alle heltall datatyper , samt for "tegn" . For heltall definerer den usignerte modifikatoren typen som skal være usignert. Standardheltallssignaturen er signert, men kan angis eksplisitt med signert modifikator. Derimot erklærer C -standarden signert røye , usignert røye og røye for å være tre forskjellige typer, men spesifiserer at alle tre må ha samme størrelse og justering. Videre må røye ha det samme numeriske området som enten signert røye eller usignert røye , men valget av dette avhenger av plattformen. Heltallige konstanter kan gjøres uten fortegn med U suffiks. For eksempel gir 0x FFFFFFFF −1, men 0xFFFFFFFFU gir 4 294 967 295 for 32-biters kode.

Kompilatorer gir ofte en advarsel når sammenligninger gjøres mellom signerte og usignerte tall eller når det ene kastes til det andre. Dette er potensielt farlige operasjoner ettersom rekkevidden for de signerte og usignerte typene er forskjellige.

Se også

Eksterne linker

  • "Oversikt over numerisk type" . MySQL 5.0 Referansehåndbok . mysql.com. 2011 . Hentet 6. januar 2012 .
  • "Forstå regler for heltallskonvertering" , CERT C Coding Standard , Computer emergency response team , hentet 31. desember 2015