Iは以下の通りである計算を持っている:使用小数部分
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
ここで最後に計算されています。どのように私は((65535分の43690)= 0.666667)本当にある(43690から32を得るのですかこの問題を解決するための
これは問題ありませんが、2^16 = 65536ではなく65535 – harold
です。整数の実数部は実数部です。 「実数部」という用語は、複素数に対してのみ意味を持ちます。また、整数分数には小数部はありません。 – Olaf
また、実際に何を計算したいのかを明確にする必要があります。異なるものを想定した異なる答えがあります。 – harold