我在查找二進制算術期間正確處理變量的信息時遇到了問題。我目前正在Atmel ATTiny84微控制器上實現一種算法。我用C++編寫它。微控制器上的二進制算術
我遇到的問題是,使用二進制算術可能會導致溢出,或者最終的可變大小大於存儲在其中的值。我很抱歉,如果這是令人困惑的讓我解釋一個例子。
uint16_t A=500;
uint8_t B=8;
uint32_t C;
C=A*B;
從我通過谷歌搜索瞭解到,如果通過大小的可變尺寸乘以M的變量N它導致的大小爲M + N的變量。在上述情況下,C = 4000,但M + N是24.然而,值4000可以適合16位。我可以簡單地將C聲明爲16位還是必須如上所示爲32位?
uint16_t A=500;
uint8_t B=8;
uint16_t C;
C=A*B;
如果我必須存放4000的變量,它是32位的,我可以簡單地把它轉移到一個變量,它是由以下
uint16_t D;
uint32_t C
C=4000;
D=C;
感謝16位在您的幫助。