??? 09/08/08 15:50 Read: times |
#158078 - Its working but I have a question on theory Responding to: ???'s previous message |
Christoph,
I've used this exactly as: unsigned long HC_Gain_temp; unsigned int HC_Gain_scaled; HC_Gain_temp = 0x03A9 - 0x039A; HC_Gain_temp = HC_Gain_temp * 0x80; HC_Gain_temp = (HC_Gain_temp + (1 << 7)) >> 8; // Divide by 256 with rounding HC_Gain_scaled = (unsigned int) HC_Gain_temp + 0x039A; and it works exactly as I want it too, with these and my other values as well. I don't understand how the rounding works. Could you or someone give me a leg up....it looks like your multiplying 1 and 128 (1 << 7) and adding it to the temp, which I don't really understand why......that is the only thing I don't understand what is happening within the equation.......everything else makes sense. Thank you for helping me out and to everyone else who contributed Thanks..... |
Topic | Author | Date |
Scale offset using ints by byte position location | 01/01/70 00:00 | |
Does type casting make sense here?... | 01/01/70 00:00 | |
Show us more......... | 01/01/70 00:00 | |
Here are defs and original function | 01/01/70 00:00 | |
ints, at leastin Keil, at 16 bits wide. | 01/01/70 00:00 | |
Christoph, | 01/01/70 00:00 | |
That makes things clearer. | 01/01/70 00:00 | |
A detail | 01/01/70 00:00 | |
Take a look at the ranges | 01/01/70 00:00 | |
Brett, that is helpful, I should add.... | 01/01/70 00:00 | |
No floating-point math required. | 01/01/70 00:00 | |
Its working but I have a question on theory | 01/01/70 00:00 | |
Rounding instead of truncate | 01/01/70 00:00 | |
oh, that is interesting | 01/01/70 00:00 | |
Russ' comment is right, though.![]() | 01/01/70 00:00 |