• ベストアンサー

0x7f040000の様な表記について

現在、JAVAを学習しています。 参考書に以下の様に表記されていたのですが、この0x********の部分は何を表しているのでしょうか? app_nameはintで定義されているので、数値が入るのだろうとは思うのですが、 16進数で代入という事なのでしょうか? この場合、10進数で代入する事とどう違うのでしょうか? public static final int app_name=0x7f040000; なお、この辺りの学習について、参考サイトがあれば助かります。 ご教授のほど、よろしくお願い致します。 m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • ssk38
  • ベストアンサー率44% (22/49)
回答No.2

16進数です。10進数で対応する数字を書いてももちろん同じ意味になります。 ご質問のapp_name(アプリケーションの名前?)が16進の意味はこれだけでは分かりません。 10進と16進の用途の違いですが、16進はbit列がすぐ想像できます。1桁が4bitに対応します。 0x1→0001 0x2→0010 0x3→0011 0x4→0100 0x5→0101 0x6→0110 0x7→0111 0x8→1000 0x9→1001 0xa→1010 0xb→1011 0xc→1100 0xd→1101 0xe→1110 0xf→1111 なので、最大数の表現、bit操作などが容易に記述できます。 32bitであらわせる数の最大数は0xffffffff(10進だと。。。計算してください) bit操作の例としてはたとえばですが、TCPパケット(参考URL)をJavaで作ろうと思ったらどのビットをどう操作するかといった処理が必要になります。 例えば下から10bit目と3bit目がたっているか見るときに if (flag & 0x0204)だとよくわかります。0x0204は4bitずつ区切ればいいので2進数で0000 0010 0000 0100 if (flag & 1028)だとわからんです。16進がないと大変です。 そんな感じでしょうか。

参考URL:
http://ja.wikipedia.org/wiki/Transmission_Control_Protocol
abuhiro
質問者

お礼

非常に詳しいアドバイスありがとうございます。 URLを参考に調べて学習させていただきます。 参考書では、ビット操作は行われていない為、何の為に16進数で操作しているのか?です。 勉強し治します。 ありがとうございました。

その他の回答 (1)

  • velga
  • ベストアンサー率50% (2/4)
回答No.1

16進数で代入ということです。 10進数で代入しても結果は一緒ですよ。 試しにOS付属の電卓を使用して10進数に変換し、書き換えてみてください。

abuhiro
質問者

お礼

アドバイスありがとうございます。 関数電卓を使用してみます。 10進数→16進数などのbit演算等は中々理解できません。 もうすこしがんばってみます。 ありがとうございました。