LoginSignup
0
0

More than 5 years have passed since last update.

Warning > Shfit count is too large < #define MAX_OS_U16 ( (1u << 16) - 1) @ 16bit マイコン > #define MAX_OS_U16 ( (1u << 15) + (1u << 15) - 1 )

Last updated at Posted at 2016-03-03
動作確認
MSP430 (16bit)
#define MAX_OS_U16 ( (1u << 16) - 1 )

上記で定義したMAX_OS_U16を使おうとしたら以下の警告が出た。

Warning[XXX]: shift count is too large

16bitのOSなので16ビット左シフトしているのがまずいとのことのようだ。

思いつき

#define MAX_OS_U16 ( (1u << 15) + (1u << 15) - 1 )

4ビットを上限とした例でデバッグ
http://ideone.com/BhkdtK

#include <iostream>
using namespace std;

#define MAX_OS_U4_TYPE_A ( (1u << 4) - 1)
#define MAX_OS_U4_TYPE_B ( (1u << 3) + (1u << 3) - 1)

int main() {

    cout << MAX_OS_U4_TYPE_A << endl;
    cout << MAX_OS_U4_TYPE_B << endl;
    return 0;
}
結果
15
15

いけそう。

いけた。警告が16なくなった。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0