teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

一番簡単なコードかな?

2020/07/19 05:38

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -39,4 +39,18 @@
39
39
  }
40
40
  ```
41
41
  `for (int i = 16; i > 0; s += (char)('0'+(n >> --i & 1))) ;` の方が
42
- メソッド `charAt` の呼び出しが無くて速いかも。でも += は遅いでしょう。
42
+ メソッド `charAt` の呼び出しが無くて速いかも。でも += は遅いでしょう。
43
+
44
+ **追記3**
45
+ これが一番簡単かな?
46
+ ```Java
47
+ class Test {
48
+ static String bin16(int n) {
49
+ return Integer.toBinaryString(0x10000 + n).substring(1);
50
+ }
51
+
52
+ public static void main(String[] args) {
53
+ System.out.println(bin16(127));
54
+ }
55
+ }
56
+ ```

2

forで回すコードを追加

2020/07/19 05:38

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -23,4 +23,20 @@
23
23
  System.out.println(bin16(127));
24
24
  }
25
25
  }
26
- ```
26
+ ```
27
+ **追記2**
28
+ さらに別解
29
+ ```Java
30
+ class Test {
31
+ static String bin16(int n) {
32
+ String s = "";
33
+ for (int i = 16; i > 0; s += "01".charAt(n >> --i & 1)) ;
34
+ return s;
35
+ }
36
+ public static void main(String[] args) {
37
+ System.out.println(bin16(127));
38
+ }
39
+ }
40
+ ```
41
+ `for (int i = 16; i > 0; s += (char)('0'+(n >> --i & 1))) ;` の方が
42
+ メソッド `charAt` の呼び出しが無くて速いかも。でも += は遅いでしょう。

1

別解の追加

2020/07/18 15:35

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -9,4 +9,18 @@
9
9
  return String.format("%0"+(16-s.length())+"d%s", 0, s);
10
10
  }
11
11
  }
12
+ ```
13
+ **追記**
14
+ 別解
15
+ ```Java
16
+ class Test {
17
+ static String bin16(int n) {
18
+ String s = "000000000000000" + Integer.toBinaryString(n);
19
+ return s.substring(s.length() - 16);
20
+ }
21
+
22
+ public static void main(String[] args) {
23
+ System.out.println(bin16(127));
24
+ }
25
+ }
12
26
  ```