![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.7
- 回答日時:
>途中結果の 0x7FFF * b は 16ビット符号無し整数として処理されるのですか。
32ビットで処理してくれたら便利なのですが。0x7FFFは「int型定数」ですから「int型 * 整数型はint型」と言う規則により、int型になります。
「int型が何ビットの整数なのか?」は、処理系に依存するので、何ビットになるかは判りません。
「符号+15ビット」と言う処理系では「符号+15ビット」になり、「符号+31ビット」と言う処理系では「符号+31ビット」になります。
No.5
- 回答日時:
はい, キャストしようと何しようと「必ず 32ビットで処理してもらう」絶対的な方法は存在しません.
そもそも「ぴったり 32ビットのデータ型」というものが存在することすら保証されていません. 例えば
short: 16ビット
int: 24ビット
long: 48ビット
long long: 96ビット
という処理系があってもかまわないのです.
No.4
- 回答日時:
処理系によります。
型の指示(U 等)がなければ、整数リテラルはint型になります。
つまり
(int)(0x7fff)
です。
整数同士の演算では、基本「大きい」ほうに自動で型変換されます。
(int)(0x7fff) * b
の段階で、7fffが 「int →16ビット符号無し整数」 または、bが「16ビット符号無し整数→int」に、型変換されます。
まわりくどい書き方をしているのは、 intが何ビットか不明だからです。
intが16ビットで、16ビット符号無し整数とは unsigned int のこと、という処理系もあります。
intが32ビット、16ビット符号無し整数とは unsigned short だったとすれば、その式は次のようなキャストしたものと同等になります
a = ( unsigned short) ( (int)0x7FFF * (int)b / (int)c );
/* 32ビットで計算した結果のうち、16ビットをaに代入 */
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学I 因数分解について 因数分解の答えが (c-b)(a-b)(a-c)となりましたが、解答では輪 7 2023/04/06 14:38
- 数学 f(x) = 2(x^2+6x+15)(5/6)^x-30 としたとき、 f(x)が最大となる正の整 2 2023/02/11 11:38
- 高校 2進数のオーバフローについて 6 2022/05/12 21:25
- 情報処理技術者・Microsoft認定資格 0xFD30 2バイトの16進数表現です。 この表現の符合付整理の値を求めなさいという問題です。 調 5 2022/07/08 13:57
- 数学 二次関数 符号の判定 (4)です。判別式Dよりx軸との交点で符号が定まると教えてもらったのですが、一 5 2022/08/23 22:11
- 数学 ごめんなさい l=⎡-log2P(ai)⎤ と 1 2022/12/05 12:25
- その他(ホビー) 3アマ試験 2 2023/05/17 05:09
- 計算機科学 6ビット(符号含む)の二進数 4 2023/04/16 13:22
- 計算機科学 ビット計算 2 2023/04/16 14:26
- 物理学 物理の問題で速さを求めよという問題があります この問題で速さを求めるとマイナスの符号がついて答えが出 3 2022/08/29 20:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
2重定義って??
-
typedef enumの使い方を教えて...
-
long型の定数の末尾にLを付ける...
-
C++でboolにintの値を代入する...
-
プログラムの中で別のmainを呼...
-
visualstudio C# テキストボッ...
-
【#define】 defineで定義した...
-
C言語 宣言した変数になにも代...
-
C++のfor文について
-
main()とint main(void)の違い
-
構造体の宣言でエラーが出ます。
-
構造体の要素すべてに対する四...
-
C言語で分割ファイル先の関数を...
-
main.c:7:43: warning: implici...
-
VC6でlong longでエラー?
-
ハンドルされていない例外が発...
-
C言語でmain関数でのreturnとexit
-
変数の型を定義しなかった場合...
-
サンク(Cの関数呼び出し)に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
long型の定数の末尾にLを付ける...
-
2重定義って??
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
構造体の要素すべてに対する四...
-
typedef enumの使い方を教えて...
-
変数の型を定義しなかった場合...
-
ハンドルされていない例外が発...
-
関数の実体定義にヘッダファイ...
-
intとINTの違いは?
-
【#define】 defineで定義した...
-
C++でboolにintの値を代入する...
-
構造体の宣言でエラーが出ます。
-
main.c:7:43: warning: implici...
-
プログラムの中で別のmainを呼...
-
void func( void )について
-
エラー「invalid conversion fr...
-
C言語 宣言した変数になにも代...
-
0除算を判定したい
おすすめ情報