• ベストアンサー

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演算等は中々理解できません。 もうすこしがんばってみます。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 数式を構成する問題

    トークンの種類を区別するための定数の定義が class TOK { public final static int plus = 0; // 演算子+ public final static int minus =1; // 演算子 – public final static int mul = 2; // 演算子* public final static int div = 3; // 演算子 / public final static int mod = 4; // 演算子 % public final static int id = 5; // 変数 public final static int const = 6; // 定数 public final static int u_plus =7;// 単項演算子 + public final static int u_minus =8;// 単項演算子 – public final static int assign =9;// 演算子 = (代入) public final static int lparen =10; // 左括弧 public final static int rparen =11;// 右括弧 public final static int END = 12;// 式の終わり } とあるとき、切り出すトークン毎に生成するオブジェクトの定義 class Token { // フィールド変数の定義 … 1) トークンの種類、2)数だった場合の値 // コンストラクタの定義 public Token(int Type) { 1文字トークンを作成 +,-,*,/,%,(,),= } public Token(int Type, int val) { 整数トークンを作成のコンストラクタ (type == TOK.costantで) } // メソッドの定義 public int getType() { トークンの種別を返す } public int getIntVal() { // このメソッドは定数トークンに対してのみ有効 トークンの整数値を返す } public String toString() { トークンの情報を文字列で返す } } というクラスを作成してください。お願いします。

  • 数値の定数を付ける時

    数値の定数名を付ける時、悩みます。 String[]の入力数の状態により処理が異なるとき この書き方では格好悪いです。 private static final int ZERO = 0; private static final int ONE = 1; private static final int TWO = 2; 上記に変わるもの private static final int NOT_VALUE = 0; private static final int ●●● = 1; private static final int △△△ = 2; ●●●と△△△に適切な定数名が思いつきません。 どういう風に考えたらいいのでしょうか?

    • ベストアンサー
    • Java
  • f(x)=xのf'(x)と∫f(x)dxのグラフ化

    f(x)=xのf'(x)と∫f(x)dxのグラフ化したいのですがここからどうすればいいのか分からず足踏みしてます。ご教授ください。 積分区間は0~xです。 import java.awt.*; import java.awt.event.*; public class graphics0 extends Frame { // コンストラクタ public graphics0(){ setSize(500, 500); setVisible(true); setTitle("graphics0"); // メッセージ処理 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } // メインメソッド public static void main(String[] args){ new graphics0(); } // ペイントメソッド public void paint(Graphics g){ //ここに絵をかくコードを書く // 中心座標 int ox = 250; int oy = 250; // グラフの幅 int width = 200; int height = 200; //直線描画のための2点(x0,y0), (x1, y1) double x0, y0; double x1, y1; // 刻み幅 double d = 0.001; double n = (int) (1.0 / d); // 軸の描画 g.drawLine(50, 250, 450, 250); g.drawLine(250, 50, 250, 450); x0 = 0; y0 = 0; x1 = d; for(int i = 0; i < n; i++){ y1 = x1 * x1; g.drawLine( (int) (x0 * width) + ox, -((int)(y0 * height) -oy), (int) (x1 * width) + ox, -((int) (y1 * height) - oy)); x0 += d; x1 += d; y0 = y1; } } } よろしくお願いいたします。

  • enumについて

    Java2 5.0で「enum」という列挙型が導入されてそうですが、 意味がよくわかりません。 今までは、interface等に (1) public final static int a = 0; public final static int b = 1; public final static int c = 2; などと、指定してきましたが、enumを使う事で、型に”安全”に なると書かれていますが、それもよくわかりません。 ”列挙値は、整数ではない”とも見たりしますが、(1)のよな使い方 をしなくなるのでしょうか。 いつどのような使い方するのか、どなたかご教示ください。 また、私のようなものに、合うようなサイトがあれば、教えてください。 宜しくお願いします。

  • Java main関数内でStatic変数使えない

    JavaのStatic変数について質問です。 Main関数の中でStaticな変数を定義しようとしたところ、 final修飾子しか使えませんというエラー文言が出ます。 Main関数内でわざわざStatic変数を使用する必要はないのですが、 出来ないと言われると何故だろうと思ってしまいます。 どなたかご説明いただけないでしょうか? -------------------------------------------------------------------- class Test { public static void main(String[] args) { // 宣言時Staticは使えなく、finalでしか定義できないとエラーが出る Static int test_val = 10; // 表示 System.out.println(test_val); } }

    • ベストアンサー
    • Java
  • #の表記

    ########## ######### ######## ####### ###### ##### #### ### ## # を表記するプログラムを組みたいんですが public class Test { public static void main(String[] args) { int i; String x = ""; for( i=10; i>0; i--){ x=x+"#"; System.out.print(x); System.out.println(); } } } これだと上下がさかさまになってしまうんです。どこを直したらよいのでしょうか。お願いします。

    • ベストアンサー
    • Java
  • C#とjavaのstatic

    public static Final int a = 1; というjavaのプログラムをC#で public static const int a = 1; に書き換えたらstaticは無理というエラーがでました。 C#とjavaの比較の説明サイトを2・3見たのですが、よく意味がわかりませんでした。 なぜC#ではstaticにできないのでしょうか?

  • クラス名はどうするのですか?

    package ex7; public class Sample { public final static int VALUE = 100; } package ex7; import static ex7.Sample.VALUE; public class Main { private final static int VALUE = 0; public static void main(String[] args) { System.out.println(VALUE); } } 上記のプログラムのクラス名は何をつければいいですか・・・? 同じくプログラム名は何と付ければいいですか・・・? ご多忙中恐れいります・・・。 ご回答の程宜しくお願い申し上げます。 回答者 これが、素人さんには分かりにくいんですね。 mkdir ex7 で、ex7 というディレクトリを作製して、 その中に、 Sample.java を public class Sample { public final static int VALUE = 100; } で、 Main.java を package ex7; import static ex7.Sample.VALUE; public class Main { private final static int VALUE = 0; public static void main(String[] args) { System.out.println(VALUE); } } で作製して、 ex7 の中から出て、 javac ex7/Sample.java javac ex7/Main.java でコンパイルします。 質問者 度々すいません・・・。 ファイル名は何にすればいいですか・・・? ご回答がなかなか来ません。

    • ベストアンサー
    • Java
  • Javaで四角をつくったのですが・・・

    とりあえずこの文をみてください。 import java.applet.Applet; import java.awt.*; public class Face extends Applet { public final static int step = 2; public final static int x0rg = 10; public final static int y0rg = 20; public void paint(Graphics g){ for(int i = 0; i < 3; i++) { for(int j = 0; j < 1; j++) { drawFace(g, x0rg + 18 * step * i, y0rg + 18 * step * j); } } drawFace(g, x0rg, y0rg); } void drawFace(Graphics g, int xStart, int yStart) { drawFrame(g, xStart, yStart); } void drawFrame(Graphics g, int xStart, int yStart) { g.drawRect(xStart, yStart, 16 * step, 16 * step); } } とこのような命令で四角を作ったとき、四角が三つ表示されるのですが、ここから一つ目(一番左の四角)の四角の二倍の大きさの箱を二つ目の四角に、さらに三つ目の四角はその二倍にしたいのですがどのようにすればできるのでしょうか?ようするに右にいくごとに二倍にしていきたいのです。 どうかお願いします。

    • ベストアンサー
    • Java
  • char型配列要素として定義 他

    JAVAプログラミングとしては非常に基本的なことだと思うのですが、いくつかわからないことがあるので教えてください。 まず、0~3までの数字をchar型の配列要素として定義するために、 private static final char[] nch = {○○}; の○○の部分に記述しなければならないことは何ですか? また、繰り返し構文を使うのに、inputstrの文字数の回数だけ繰り返し・配列nchの要素数の回数だけ繰り返しをそれぞれ{int i = 0 ; ○○; i ++} ・ {int j = 0 ; ××; j++}と記述するのですが、○○、××の部分の記述内容はどうなるのでしょうか? 最後に、StringBufferで定義されたbfnをString型に変えて戻り値とするにはreturnの後にどのように記述すればよいのでしょうか? まだプログラミングを始めたばかりで応用がほとんどわからない状態です。回答よろしくお願いします。

    • ベストアンサー
    • Java