• ベストアンサー

JAVAのデータタイプ

int のランダムナンバー2つを足し算するのと long のランダムナンバー2つを足し算するのと BigInteger のランダムナンバー2つを足し算するのとでは longの足し算が一番時間がかからずに速いのですが、 それはどうしてですか?intは4バイト、 longは8バイトだから、なんとなくlongのほうが 早そうな気がするのですが・・・。

  • nah
  • お礼率28% (228/793)

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

  • ベストアンサー
回答No.1

ランダムナンバー自身がlong型じゃありませんでしたっけ? そう考えると、キャストが要らない分、longの演算が速いので納得いくと思います。

関連するQ&A

  • javaでべき乗余

    テストプログラムとしてjavaでべき乗余を求めるプログラムを作っているんですがint N の大きさを大きくするとかなり時間がかかってしまいます。実行時間を早くする方法はないでしょうか? import java.math.BigInteger; import java.util.Random; public class s1{ public static void main(String args[]){ BigInteger a = new BigInteger("2"); int N = 100000; BigInteger n,p,q; Random rnd = new Random(); BigInteger f[] = new BigInteger[N]; int bit = 512; int k = 10; p = new BigInteger(bit,k, rnd); q = new BigInteger(bit,k, rnd); n = p.multiply(q); int j; for(j=0;j<N;j++){ f[j]=(a.modPow(BigInteger.valueOf(j), n)) ; } for(j=0;j<N;j++){ System.out.println(j +"="+f[j]); } } }

    • ベストアンサー
    • Java
  • javaプログラミングについて

    ただいまjavaプログラム勉強中でhit&blowを制作しております。 public static void main(String[] args) { Scanner scan = new Scanner(System.in); Random rand = new Random(); int[] answer = new int[4]; int[] input = new int[4]; int[] Number = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }; int x = 10; for (int i = 0; i < 4; i++) { int select = (int) (Math.random() * x); answer[i] = Number[select]; Number[select] = Number[x - 1]; x--; } int count = 1; while (true) { System.out.println("4桁の異なる数値を入力"); int str_input = scan.nextInt(); // 代入 for (int i = 0; i < 4; i++) { input[i] = str_input; } // hit int hit = 0; for (int i = 0; i < 4; i++) { if (input[i] == answer[i]) { hit++; } } // blow int blow = 0; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++){ if (i != j && input[i] == answer[j]) { blow++; } } } if (hit == 4) { System.out.println("4hit"); System.out.println("正解まで " + count + "回"); break; } else { System.out.println("Hit:" + hit + " Blow:" + (blow - hit)); count++; } } } } 数字が4桁で作っているのですが、数字や4桁以上を入力してしまった場合の表示は後にしようとして、先にhitとblowの判定を作ろうとしているのですが、上記で実行したところhitとblowの判定がされずhit:0blow:0と表示されてしまいます。解決策を教えてください。 自分で作ってみたものの、hit blowの判定方法があっているかも自信がないです。

    • ベストアンサー
    • Java
  • Javaについてすこし教えてください。Math.random()につい

    Javaについてすこし教えてください。Math.random()についてです。 例えばint iに0から51までのランダムな数を入れたいときはとりあえずint型にキャストするとして i=(int)(Math.random()←ここからどういった感じにすれば良いのでしょうか? そもそもMath.randomの使い方がいまいち分かりません。 教えてください><

    • ベストアンサー
    • Java
  • javaの繰り上がった回数を表示するプログラム

    javaの繰り上がった回数を計算するプログラム 1ケタから10ケタの足し算をし繰り上がった回数を表示するプログラムを作成したいのです。 例 入力:159 444 出力:2回 入力:6789 4321 出力:4回 このようなメソッドはあるのですが、{???}のところに入る部分が分かりません。 static private int 繰り上がり回数(long m1,long m2){ int c=0,kuri=0; while( (m1!=0) && (m2!=0) ){ kuri= {???} /10; c+=(kuri!=0)?1:0; m1/=10;m2/=10; } return c; }

  • JAVA 乱数で同じ数字を出さない方法

    JAVAで乱数を使いたいのですが、同じ数を出さない方法が今一度 わかりません。 プログラムはサーブレットで記述しており、ブラウザで「数を出す」ボタンがおされたら、リクエストを受けたサーブレットは、一つ、1~10までの数を出し表示はJSPです。そしてまたボタンが押されたら、一つ、1~10までの数を出します。 以下に今のサーブレットに記述してあるプログラムの状態を書かせていただきますので、同じ数字を出さない方法が何かございましたら教えてください。宜しくお願いします。 long seed = System.currentTimeMillis(); //時間で乱数値をとる Random r1=new Random(seed); //乱数ジェネレータを作成する int i; i = r1.nextInt(10)+1;//入力された命令回数をint型に変換し1から10までの数が出されiに入る。

    • ベストアンサー
    • Java
  • javaの繰り上がった回数を表示するプログラム

    javaの繰り上がった回数を表示するプログラム javaの繰り上がった回数を計算するプログラム 1ケタから10ケタの足し算をし繰り上がった回数を表示するプログラムを作成したいのです。 例 入力:159 444 出力:2回 入力:6789 4321 出力:4回 このようなメソッドはあるのですが、{???}のところに入る部分が分かりません。 static private int 繰り上がり回数(long m1,long m2){ int c=0,kuri=0; while( (m1!=0) && (m2!=0) ){ kuri= {???} /10; c+=(kuri!=0)?1:0; m1/=10;m2/=10; } return c; }

  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

    • ベストアンサー
    • Java
  • バイナリ読み込み時のデータ受け渡しについて

    質問させていただきます。 XMLファイルを圧縮後にバイナリ読み込みし、long*に設定してそれを4バイトのlong配列に格納したいと考えています。 ファイルを読み込む際にはデータ数が解らないので、ループを回したいと思っています。 以下に一部記載します。 これでpBinaryには正常にバイナリデータが入るのでしょうか? わかる方がいれば教えてください。 ****************************************** FILE *pFile = NULL; pFile = fopen("XMLFile.xml", "rb"); int iRet = 0; int iSize = 0; bool bRet = false; long *pBinary = new long; while(bRet != true) { /* 4バイトずつ読み込みpBinaryに設定する */ fread(pBinary, sizeof(4), 1, pFile); if(iRet != 1) { bRet = true; } else { iSize++; } }

  • C言語の変数の型がわかりません

    C言語の変数の型がわかりません [int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. [long int]は4バイトを使って整数(-2147483648~2147483648)を格納できる. のようなことが書いてあります. [int]と[long int]の違いは何ですか?

  • Javaについて

    明日学校でミニテストがあるのですが、例題で出された問題がどうしても解けません。 分かる方教えていただけたら助かります。 回答よろしくお願いします。 ・Javaはオブジェクト指向をとりいれた『   』言語 ・実行するためには『   』コマンドによって、中間ファイルを作り、『    』コマンドによって実行する。 ・オブジェクト指向において、クラスは『設計図』であり、クラスを基に実体であるインスタンスを生成する。 ・int型の変数「number」を定義し、値「13」を代入しなさい。 ・以下のコードではエラーとなるため、キャストが必要です。適切なキャストを追加し、実行できるコードに修正してください。  int number = 1.3;

専門家に質問してみよう