Sida 2 av 2
Re: Konvertera en CHAR till Hex?
Postat: 30 maj 2009, 12:44:29
av danielr112
mri. vilket ska det vara i mitt fall? unsigned eller signed?
Re: Konvertera en CHAR till Hex?
Postat: 30 maj 2009, 13:11:13
av cyr
Alltid unsigned om man vill behandla "bara binär data". Signed endast om det verkligen behövs negativa tal.
Re: Konvertera en CHAR till Hex?
Postat: 30 maj 2009, 13:14:41
av danielr112
Tack cyr!
Måste verkligen läsa upp mig på C igen

Re: Konvertera en CHAR till Hex?
Postat: 31 maj 2009, 11:54:32
av bos
Just signed/unsigned borde nog tala för sig själva, men det kan nog vara en idé att fräscha upp minnet om de olika datatyperna som språket besitter. Ibland kan det bli en del trix om man utgår från att en datatyp ser ut på ett visst sätt medan den i själva verket beter sig på ett annat.
Re: Konvertera en CHAR till Hex?
Postat: 31 maj 2009, 12:28:13
av cyr
Det finns många fällor man kan råka hamna i när man blandar signed/unsigned, int/float och typer med olika bitlängd.
Man lär sig efter hand av sina egna misstag om inte annat

Re: Konvertera en CHAR till Hex?
Postat: 1 juni 2009, 18:44:53
av dangraf
mri skrev:om char är signed och variabeln 'char byte' har värdet 0xff, då är byte>>4 lika med 0xff (-1), när man kaske förväntade sig 0x0f (15).
Detta blev jag lite nyfiken på eftersom jag aldrig råkat ut för felet. Testade precis i C30 och det blir som du beskriver men jag förstår inte riktigt varför.
Hur tänker komilatorn i fallet då "signed char 0xff>>4=0xff"?
Jag får det till att antingen bli 0x0F som du skrev ovan eller så tolkar jag det som -1/16 =0 men det är ju fel

Re: Konvertera en CHAR till Hex?
Postat: 1 juni 2009, 21:05:03
av mri
När man högerskifrar ett negativt tal i tvåkomplementform, måste CPU'n fylla på med ettor i den mest signifikanta biten, annars blir ju talet positivt. Det som är lite lurigt här är att fast man högerskiftar ett negativt tal i all oändlighet blir det aldrig noll, det stannar vid -1 (0xff).