回答受付中の質問
質問:No.6301062
すぐに回答ほしいです
お気に入り投稿に追加する (0人が追加しました)
回答数5
閲覧数2976
0xffffとは?
0xffffとは?

プログラム初心者です。
C++のプログラムを読んでいたら、0xffffというのが出てきました。
0の補数で-0と考え、0という値として考えたらいいのでしょうか?

また、0xffffuというのも出てきたのですが、これは何ですか?


調べてみたのですが、はっきりとわかるものが見つからなかったので質問しました。
初歩的な質問とは思いますが、回答よろしくお願いします。
投稿日時 - 2010-11-06 17:08:12
あなたの言葉で、相談者さんの悩みを解決しませんか?
OKWaveではみんなのありがとうの輪を広げています!
この質問は役に立ちましたか?
2人が「このQ&Aが役に立った」と投票しています
回答
回答:No.5
規格を確認しました. int は最低 16ビットなので, 0xffff は unsigned int なら確実に表現することができます. ということで, #3 の通り
・単に 0xffff とあれば int または unsigned int (この値が int に収まれば int, 収まらなければ unsigned int)
・0xffffu なら unsigned int
で, この値を 10進数で表現すれば「0xffff が int に収まる」ときには 65535, 収まらないときには 65535u となります.
投稿日時 - 2010-11-08 11:22:28
この回答を支持する
(現在0人が支持しています)
回答:No.4
0xffffは16bit全てが1で埋まっている状態、という以上の意味はありません。
それをどう解釈するかは扱う側の問題ですから、どういう文脈で出てきたものかがわからないと確定的なことは言えません。
そもそも、それを数値として扱っていいものかどうかすら怪しいのです。

なお数値の場合、補数表現は2の補数なので数値解釈なら16bit値では-1、16bitを超える場合には65535です。

0xffffuの方は「符号なし整数型」として扱うので65535と確定しますが。
投稿日時 - 2010-11-07 09:14:29
この回答を支持する
(現在0人が支持しています)
回答:No.3
あれ? 0xffff は int または unisgned int の 65535 (65535 を int で表すことができれば int, そうでなければ unsigned int) じゃないかなぁ....
0xffffu は確実に unsigned int の 65535 (つまり 65535u) だけど.
投稿日時 - 2010-11-06 21:10:17
この回答を支持する
(現在0人が支持しています)
回答:No.2
0xffffは整数を16進法表現したもので、下16ビットがすべて1の整数、という以外の意味はありません。

16bit符号付き整数の場合(最近の多くの環境ではsigned shortが該当する)、2の補数表現で-1になることはあります。
16bit符号無し(最近の多くの環境ではunsigned shortが該当する)や17bit以上の整数なら(最近の多くの環境ではintやlongが該当する)、単に0xffff(10進表現で65535)という数値です。

> また、0xffffuというのも出てきたのですが、これは何ですか?

整数定数(整数リテラル)の後ろのuまたはUを付けると、その整数は「unsigned」として扱われます。

主に、暗黙の型変換等に影響します。
例えば
1 > -1
は、ともに符号有り整数として扱われ、符号通りに順序付けられて、真になりますが、
1U > -1
は、-1が暗黙の型変換で符号無し整数として扱われ、2の補数表現で0xffffffff(32bitの場合)の符号無し整数となり、1より大きくなるため、この式は偽となります。
投稿日時 - 2010-11-06 17:49:51
この回答を支持する
(現在0人が支持しています)
回答:No.1
0xffff は、1の補数で考えてください。
-1 になります。

数値表現の末尾に "u" が付くと、unsigned で扱われます。
0xffffu は、65535 です。
投稿日時 - 2010-11-06 17:27:52
この回答を支持する
(現在0人が支持しています)
もっと聞いてみる
関連するQ&Aはこちら
いまMicrosoft Visual C++ 2010 Expressで2の補数計算のプログラムを作成していて、 コマンドボタンを押したら、次のプログラムを実行使用しているのですが(まだ途中ですが...
以下はJavaの参考書に掲載されている補数についての問題です。 疑問点にお答えいただけましたら幸いです。 次の10進数の補数を8桁の2進数で求めなさい A 15 B 0 C 1 質問1:...
趣味でゲームをDirectXとC++で作っているんですけど、ダメージ計算のプログラムで分からないことがあります。乱数0.85~1の範囲として計算するにはfloat型でやればいいと思うんですけど、結果を...
この他の関連するQ&Aをキーワードで探す
プログラミングのサブカテゴリ
カテゴリ:C・C++
RSS
PR
-PR-