Does anyone have a simple way to swap the high 4 order bits with the low 4 order bits in a byte? For example:
%00110010 becomes %00100011
I've tried various ways using shift right by division with temp variables, etc. but none seem to work.
[color=Purple]b0[/color][color=DarkCyan]=[/color][color=Navy]%00110010[/color]
[color=Blue]sertxd ([/color][color=Black]#[/color][color=Purple]bit7[/color][color=Black],#[/color][color=Purple]bit6[/color][color=Black],#[/color][color=Purple]bit5[/color][color=Black],#[/color][color=Purple]bit4[/color][color=Black],#[/color][color=Purple]bit3[/color][color=Black],#[/color][color=Purple]bit2[/color][color=Black],#[/color][color=Purple]bit1[/color][color=Black],#[/color][color=Purple]bit0[/color][color=Black],[/color][color=Red]"==>"[/color][color=Blue])[/color]
[color=Purple]b1[/color][color=DarkCyan]=[/color][color=Purple]b0
bit0[/color][color=DarkCyan]=[/color][color=Purple]bit4
bit1[/color][color=DarkCyan]=[/color][color=Purple]bit5
bit2[/color][color=DarkCyan]=[/color][color=Purple]bit6
bit3[/color][color=DarkCyan]=[/color][color=Purple]bit7
bit4[/color][color=DarkCyan]=[/color][color=Purple]bit8
bit5[/color][color=DarkCyan]=[/color][color=Purple]bit9
bit6[/color][color=DarkCyan]=[/color][color=Purple]bit10
bit7[/color][color=DarkCyan]=[/color][color=Purple]bit11[/color]
[color=Blue]sertxd ([/color][color=Black]#[/color][color=Purple]bit7[/color][color=Black],#[/color][color=Purple]bit6[/color][color=Black],#[/color][color=Purple]bit5[/color][color=Black],#[/color][color=Purple]bit4[/color][color=Black],#[/color][color=Purple]bit3[/color][color=Black],#[/color][color=Purple]bit2[/color][color=Black],#[/color][color=Purple]bit1[/color][color=Black],#[/color][color=Purple]bit0[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])[/color]
Does anyone have a simple way to swap the high 4 order bits with the low 4 order bits in a byte? For example:
%00110010 becomes %00100011
I've tried various ways using shift right by division with temp variables, etc. but none seem to work.
[color=Purple]b0[/color][color=DarkCyan]=[/color][color=Navy]%00110010[/color]
[color=Blue]sertxd ([/color][color=Black]#[/color][color=Purple]bit7[/color][color=Black],#[/color][color=Purple]bit6[/color][color=Black],#[/color][color=Purple]bit5[/color][color=Black],#[/color][color=Purple]bit4[/color][color=Black],#[/color][color=Purple]bit3[/color][color=Black],#[/color][color=Purple]bit2[/color][color=Black],#[/color][color=Purple]bit1[/color][color=Black],#[/color][color=Purple]bit0[/color][color=Black],[/color][color=Red]"-->"[/color][color=Blue])[/color]
[color=Purple]b1[/color][color=DarkCyan]=[/color][color=Purple]b0[/color][color=DarkCyan]/[/color][color=Navy]16[/color]
[color=Purple]b0[/color][color=DarkCyan]=[/color][color=Purple]b0[/color][color=DarkCyan]*[/color][color=Navy]16[/color][color=DarkCyan]+[/color][color=Purple]b1[/color]
[color=Blue]sertxd ([/color][color=Black]#[/color][color=Purple]bit7[/color][color=Black],#[/color][color=Purple]bit6[/color][color=Black],#[/color][color=Purple]bit5[/color][color=Black],#[/color][color=Purple]bit4[/color][color=Black],#[/color][color=Purple]bit3[/color][color=Black],#[/color][color=Purple]bit2[/color][color=Black],#[/color][color=Purple]bit1[/color][color=Black],#[/color][color=Purple]bit0[/color][color=Black],[/color][color=Navy]13[/color][color=Black],[/color][color=Navy]10[/color][color=Blue])[/color]
Did you try that in simulation ?let b0=b0 xor b0
Ah yes, I thought it should be possible; saves a (temporary) RAM byte but uses one or two more program bytes.b1 = b0 * 256 | b0 / 16
No.Harder than I thought,can't rotate or shift and carry.Check each bit probably as said.Did you try that in simulation ?
It simulates foe me if yI substitute NOR for the XOR. JimSlet b0=b0 xor b0
??? save nothing : b0 and b1 are used !saves a (temporary) RAM byte but uses one or two more program bytes..
except #2...I don't see how any of the proposals that don't use a shifting operator ( << , >> , * , / and sometimes +) can be expected to work..
Yep, that produces the result on an X2-series PICAXE (12 bytes of program space).If using an x1 or X2 part and option is the rev command.
Untested (still away from my PCs)
B0 = b0 rev 4 : b0 = b0 rev 8 : b0 = b0 rev 4
As unary operators may not be able to combine into one line.