使用小數部分我有一個計算其爲以下:在固定點計算
1472/48 = 30.666667
(30 * 48) = 1440
(0.666667 * 48) = 32
所以數字我NEAD是1440和32,其可與實數部分和的小數部分來計算第一次計算。 使用下面的一段代碼我找到了真正的部分,但小數部分是在一個規模。
#define SHIFT_AMOUNT 16
// 2 bytes is used to map divisions
#define SCALE_FACTOR 65535 // (2^16)
#define SHIFT_MASK ((1 << SHIFT_AMOUNT) - 1)
uint32_t total_msgs = DATA_LENGTH << SHIFT_AMOUNT;
total_msgs /= PAYLOAD_SIZE;
uint8_t real_part = total_msgs >> SHIFT_AMOUNT; // 30
uint32_t decimal_part = total_msgs & SHIFT_MASK; // 43690
現在爲最後一次計算我卡住了。我如何得到43690 32(這確實是((六萬五千五百三十五分之四萬三千六百九十)= 0.666667)
這不會導致您的問題,但2^16 = 65536,而不是65535 – harold
整數的實數部分是一個實數部分。術語「實部」只對複數有意義。整數除法沒有小數部分。 – Olaf
另外你也許應該澄清你真正想要計算的東西,現在有不同的答案,假設不同的事情。 – harold