プロが教える店舗&オフィスのセキュリティ対策術

現在、JAVAを学習しています。

参考書に以下の様に表記されていたのですが、この0x********の部分は何を表しているのでしょうか?
app_nameはintで定義されているので、数値が入るのだろうとは思うのですが、
16進数で代入という事なのでしょうか?
この場合、10進数で代入する事とどう違うのでしょうか?

public static final int app_name=0x7f040000;

なお、この辺りの学習について、参考サイトがあれば助かります。
ご教授のほど、よろしくお願い致します。
m(_ _)m

A 回答 (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_Contro …
    • good
    • 0
この回答へのお礼

非常に詳しいアドバイスありがとうございます。
URLを参考に調べて学習させていただきます。

参考書では、ビット操作は行われていない為、何の為に16進数で操作しているのか?です。

勉強し治します。
ありがとうございました。

お礼日時:2011/03/25 10:01

16進数で代入ということです。


10進数で代入しても結果は一緒ですよ。
試しにOS付属の電卓を使用して10進数に変換し、書き換えてみてください。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

関数電卓を使用してみます。

10進数→16進数などのbit演算等は中々理解できません。
もうすこしがんばってみます。

ありがとうございました。

お礼日時:2011/03/25 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!