Konvertera en CHAR till Hex?
-
- Inlägg: 8092
- Blev medlem: 18 januari 2009, 00:48:24
- Ort: Alvesta, Småland
Re: Konvertera en CHAR till Hex?
mri. vilket ska det vara i mitt fall? unsigned eller signed?
Re: Konvertera en CHAR till Hex?
Alltid unsigned om man vill behandla "bara binär data". Signed endast om det verkligen behövs negativa tal.
-
- Inlägg: 8092
- Blev medlem: 18 januari 2009, 00:48:24
- Ort: Alvesta, Småland
Re: Konvertera en CHAR till Hex?
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?
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
Man lär sig efter hand av sina egna misstag om inte annat

Re: Konvertera en CHAR till Hex?
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.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).
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?
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).