回答編集履歴

3

一番簡単なコードかな?

2020/07/19 05:38

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -81,3 +81,31 @@
81
81
  `for (int i = 16; i > 0; s += (char)('0'+(n >> --i & 1))) ;` の方が
82
82
 
83
83
  メソッド `charAt` の呼び出しが無くて速いかも。でも += は遅いでしょう。
84
+
85
+
86
+
87
+ **追記3**
88
+
89
+ これが一番簡単かな?
90
+
91
+ ```Java
92
+
93
+ class Test {
94
+
95
+ static String bin16(int n) {
96
+
97
+ return Integer.toBinaryString(0x10000 + n).substring(1);
98
+
99
+ }
100
+
101
+
102
+
103
+ public static void main(String[] args) {
104
+
105
+ System.out.println(bin16(127));
106
+
107
+ }
108
+
109
+ }
110
+
111
+ ```

2

forで回すコードを追加

2020/07/19 05:38

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -49,3 +49,35 @@
49
49
  }
50
50
 
51
51
  ```
52
+
53
+ **追記2**
54
+
55
+ さらに別解
56
+
57
+ ```Java
58
+
59
+ class Test {
60
+
61
+ static String bin16(int n) {
62
+
63
+ String s = "";
64
+
65
+ for (int i = 16; i > 0; s += "01".charAt(n >> --i & 1)) ;
66
+
67
+ return s;
68
+
69
+ }
70
+
71
+ public static void main(String[] args) {
72
+
73
+ System.out.println(bin16(127));
74
+
75
+ }
76
+
77
+ }
78
+
79
+ ```
80
+
81
+ `for (int i = 16; i > 0; s += (char)('0'+(n >> --i & 1))) ;` の方が
82
+
83
+ メソッド `charAt` の呼び出しが無くて速いかも。でも += は遅いでしょう。

1

別解の追加

2020/07/18 15:35

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -21,3 +21,31 @@
21
21
  }
22
22
 
23
23
  ```
24
+
25
+ **追記**
26
+
27
+ 別解
28
+
29
+ ```Java
30
+
31
+ class Test {
32
+
33
+ static String bin16(int n) {
34
+
35
+ String s = "000000000000000" + Integer.toBinaryString(n);
36
+
37
+ return s.substring(s.length() - 16);
38
+
39
+ }
40
+
41
+
42
+
43
+ public static void main(String[] args) {
44
+
45
+ System.out.println(bin16(127));
46
+
47
+ }
48
+
49
+ }
50
+
51
+ ```