回答編集履歴

2

副作用→弊害に変更(「副作用」という言葉を避けた)

2020/09/15 18:22

投稿

hidezzz
hidezzz

スコア1248

test CHANGED
@@ -176,7 +176,7 @@
176
176
 
177
177
  xwork = x;
178
178
 
179
- #if 0 /* 0になった時点で(xから取り出すものがなくなった時点で)終了できるが副作用があるかも */
179
+ #if 0 /* 0になった時点で(xから取り出すものがなくなった時点で)終了できるがなんか弊害があるかも */
180
180
 
181
181
  while ( xwork != 0 )
182
182
 

1

最後の例の演算を減らした。

2020/09/15 18:22

投稿

hidezzz
hidezzz

スコア1248

test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
 
150
150
 
151
- あと、可読性は落ちますが、提示コードの場合ifを通る回数を減らと思い
151
+ あと、可読性は落ちますが、ifを通る回数を減らしたり、xをxworkにコピーして破壊しながら3ビットずつ取り出すとかすればちょっと速くなかもしれせん
152
152
 
153
153
  ```cpp
154
154
 
@@ -170,15 +170,31 @@
170
170
 
171
171
  int equal2 = 0;
172
172
 
173
-
173
+ int xwork;
174
+
175
+
176
+
174
-
177
+ xwork = x;
178
+
179
+ #if 0 /* 0になった時点で(xから取り出すものがなくなった時点で)終了できるが副作用があるかも */
180
+
181
+ while ( xwork != 0 )
182
+
183
+ #else
184
+
175
- for ( int i = 0 ; i < 9 ; ++i ) {
185
+ for ( int i = 0 ; i < 9 ; ++i )
186
+
187
+ #endif
188
+
189
+ {
176
190
 
177
191
  int v;
178
192
 
179
193
 
180
194
 
181
- v = (x >> i * 3) & 0b111;
195
+ v = xwork & 0b111;
196
+
197
+ xwork >>= 3;
182
198
 
183
199
 
184
200
 
@@ -234,4 +250,6 @@
234
250
 
235
251
  }
236
252
 
253
+
254
+
237
255
  ```