Postat: 8 maj 2008, 20:22:41
"<<" är shift-left kommando, ">>" är shift-right kommando.
A <<= 2; flyttar upp värdet i A med 2 platser till vänster vilket är det samma som att multiplicera med 4 fast det går snabbare.
Och på vilket sätt omvandla mellan olika talsystem?
Den valda µC (i detta fall en PIC) kan läsa minnesceller (RAM) och i en byte där finns ett värde mellan 0 och 255, inget annat!
Om vi tar t.ex. 211 decimalt kan det även skrivas som 11010011 binärt, 323 oktalt och D3 som hexadecimalt. För att kompilern ska fatta vad som är vad startar man hex(adecimalt) med 0x, det blir alltså 0xD3, ANSI C använder versalt 'O' som tecken på oktalt värde, alltså blir det 0323 (noll-3-2-3). Vissa kompilare medger binär input med 0b före, har för mig att MikroC har det och det blir då 0b11010011.
Och alla dessa sätt anger bara det samma värde: 211 decimalt.
Så sluta prata om att den omvandlar osv. det är ENBART hur DU skriver det i kompilern som avgör.
Vissa saker kan vara praktisk att skriva i binärt (systemregister, inställningar osv.), andra kan vara praktiska i hex och många är bra som decimala värden men de är ALLA uttryck för det samma: värdet på en(eller fler) byte(s).
Ett tips: flytta dina kommentarer i det första inlägget till vänster så sidan inte blir så bred, det är irriterande att skulle scrolla i sidled för en struntsak.
Edit: ändrat i sakfel enl. mri's inlägg härunder.
A <<= 2; flyttar upp värdet i A med 2 platser till vänster vilket är det samma som att multiplicera med 4 fast det går snabbare.
Och på vilket sätt omvandla mellan olika talsystem?
Den valda µC (i detta fall en PIC) kan läsa minnesceller (RAM) och i en byte där finns ett värde mellan 0 och 255, inget annat!
Om vi tar t.ex. 211 decimalt kan det även skrivas som 11010011 binärt, 323 oktalt och D3 som hexadecimalt. För att kompilern ska fatta vad som är vad startar man hex(adecimalt) med 0x, det blir alltså 0xD3, ANSI C använder versalt 'O' som tecken på oktalt värde, alltså blir det 0323 (noll-3-2-3). Vissa kompilare medger binär input med 0b före, har för mig att MikroC har det och det blir då 0b11010011.
Och alla dessa sätt anger bara det samma värde: 211 decimalt.
Så sluta prata om att den omvandlar osv. det är ENBART hur DU skriver det i kompilern som avgör.
Vissa saker kan vara praktisk att skriva i binärt (systemregister, inställningar osv.), andra kan vara praktiska i hex och många är bra som decimala värden men de är ALLA uttryck för det samma: värdet på en(eller fler) byte(s).
Ett tips: flytta dina kommentarer i det första inlägget till vänster så sidan inte blir så bred, det är irriterande att skulle scrolla i sidled för en struntsak.
Edit: ändrat i sakfel enl. mri's inlägg härunder.