例. short sval; sval = (short)floatex_tolong(val);値の範囲チェックは、必要に応じて行ってください。
例. FLOATEX smax = { 0, 0, 0, 0, 0, 0, 0xfe, 0xff, 0xd, 0x40 }; /* 32767 */ FLOATEX smin = { 0, 0, 0, 0, 0, 0, 0, 0x80, 0xe, 0xc0 }; /* -32768 */ short sval; if (floatex_comp(val,smax) > 0) || floatex_comp(val,smin) < 0) オーバーフロー else sval = (short)floatex_tolong(val);
上限、下限 | バイナリデータ |
127 | 0, 0, 0, 0, 0, 0, 0, 0xfe, 5, 0x40 |
-128 | 0, 0, 0, 0, 0, 0, 0, 0x80, 6, 0xc0 |
255 | 0, 0, 0, 0, 0, 0, 0, 0xff, 6, 0x40 |
32767 | 0, 0, 0, 0, 0, 0, 0xfe, 0xff, 0xd, 0x40 |
-32768 | 0, 0, 0, 0, 0, 0, 0, 0x80, 0xe, 0xc0 |
65535 | 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xe, 0x40 |
2147483647 | 0, 0, 0, 0, 0xfe, 0xff, 0xff, 0xff, 0x1d, 0x40 |
-2147483648 | 0, 0, 0, 0, 0, 0, 0, 0x80, 0x1e, 0xc0 |
4294967295 | 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x40 |