JavaのIntegerのgetCharsメソッドの52429の数字の意味が分かりません。
(※コードはjdk8から抜粋。)
Java
1static void getChars(int i, int index, char[] buf) { 2 int q, r; 3 int charPos = index; 4 char sign = 0; 5 6 if (i < 0) { 7 sign = '-'; 8 i = -i; 9 } 10 11 // Generate two digits per iteration 12 while (i >= 65536) { 13 q = i / 100; 14 // really: r = i - (q * 100); 15 r = i - ((q << 6) + (q << 5) + (q << 2)); 16 i = q; 17 buf [--charPos] = DigitOnes[r]; 18 buf [--charPos] = DigitTens[r]; 19 } 20 21 // Fall thru to fast mode for smaller numbers 22 // assert(i <= 65536, i); 23 for (;;) { 24 q = (i * 52429) >>> (16+3);//openjdk9 25 r = i - ((q << 3) + (q << 1)); // r = i-(q*10) ... 26 buf [--charPos] = digits [r]; 27 i = q; 28 if (i == 0) break; 29 } 30 if (sign != 0) { 31 buf [--charPos] = sign; 32 } 33 }
上記のコードの中にある、52429を導出する公式や原理を教えて頂きたいです。
Javaをご存知の方教えてください。
そもそもこれはどこのメソッドで何をするメソッドなのですか?「IntegerのgetChars」ということですが、java.lang.Integerクラスにはこのようなメソッドは存在しません。
publicメソッドではないので、apiではありません。アクセスレベルもデフォルトです。そもそも、これがどこのメソッドでなにをするメソッドなのか分からないひとは、答えなくていいですよ。説明した所で答えられないでしょう。
回答4件
あなたの回答
tips
プレビュー