- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
276 :デフォルトの名無しさん[]:2015/03/09(月) 18:53:24.30 ID:YsuhcNZs - シフトして、アンド
<<なら左端が1の数とアンド 10000000 >>なら右端が1の数とアンド 00000001 真の数をカウント
|
- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
277 :デフォルトの名無しさん[]:2015/03/09(月) 19:22:59.90 ID:YsuhcNZs - #define BINARY_1 1
#define BINARY_10 2 #define BINARY_100 4 #define BINARY_1000 8 #include <stdio.h> int main(void) { &#160;&#160;const int SHIFT_COUNT = 31; &#160;&#160;int count, i, msb; &#160;&#160;int e = 0x00000001; &#160;&#160;int test = BINARY_10 | BINARY_100 | BINARY_1000; /* 00001110b */ &#160;&#160;for(i = 0; i < SHIFT_COUNT; i++) { &#160;&#160;&#160;&#160;e <<= 1; &#160;&#160;} &#160;&#160;for(count = 0, i = 0; i < SHIFT_COUNT; i++) { &#160;&#160;&#160;&#160;if(test & e) { &#160;&#160;&#160;&#160;&#160;&#160;count += 1; &#160;&#160;&#160;&#160;} &#160;&#160;&#160;&#160;e >>= 1; &#160;&#160;} &#160;&#160;printf("%d\n", count); &#160;&#160;return 0; } /* C:\work>shiftand 3 */
|
- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
278 :デフォルトの名無しさん[]:2015/03/09(月) 19:24:14.73 ID:YsuhcNZs - #define BINARY_1 1
#define BINARY_10 2 #define BINARY_100 4 #define BINARY_1000 8 #include <stdio.h> int main(void) { const int SHIFT_COUNT = 31; int count, i, msb; int e = 0x00000001; int test = BINARY_10 | BINARY_100 | BINARY_1000; /* 00001110b */ for(i = 0; i < SHIFT_COUNT; i++) { e <<= 1; } for(count = 0, i = 0; i < SHIFT_COUNT; i++) { if(test & e) { count += 1; } e >>= 1; } printf("%d\n", count); return 0; } /* C:\work>shiftand 3 */
|
- C言語をやりたいんですが
267 :デフォルトの名無しさん[sage]:2015/03/09(月) 20:12:49.16 ID:YsuhcNZs - #define BINARY_1 1
#define BINARY_10 2 #define BINARY_100 4 #define BINARY_1000 8 #include <stdio.h> int main(void) { const int SHIFT_COUNT = 31; int count, i, msb; int e = 0x00000001; int test = BINARY_10 | BINARY_100 | BINARY_1000; /* 00001110b */ for(i = 0; i < SHIFT_COUNT; i++) { e <<= 1; } for(count = 0, i = 0; i < SHIFT_COUNT; i++) { if(test & e) { count += 1; } test <<= 1; } printf("%d\n", count); return 0; } /* C:\work>shiftand 3 */
|
- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
282 :デフォルトの名無しさん[sage]:2015/03/09(月) 20:15:13.70 ID:YsuhcNZs - >>276の発想(<<なら左端が1の数とアンド)にしたがったプログラムもかきました
test <<= 1; http://peace.2ch.net/test/read.cgi/tech/1198344909/267
|
- C言語をやりたいんですが
268 :デフォルトの名無しさん[sage]:2015/03/09(月) 21:26:16.39 ID:YsuhcNZs - いろいろまちがえた
|
- C言語をやりたいんですが
269 :デフォルトの名無しさん[sage]:2015/03/09(月) 21:27:25.50 ID:YsuhcNZs - #define BINARY_1 1
#define BINARY_10 2 #define BINARY_100 4 #define BINARY_1000 8 #include <stdio.h> int main(void) { const int SHIFT_COUNT = 31; int count, i; int e = 0x00000001; int test = BINARY_1 | BINARY_1000; /* 00001001b */ for(i = 0; i < SHIFT_COUNT; i++) { e <<= 1; } for(count = 0, i = 0; i < SHIFT_COUNT + 1; i++) { /* 32 */ if(test & e) { count += 1; } test <<= 1; } printf("%d\n", count); return 0; } /* C:\work>shiftand 2 */
|
- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
284 :282[]:2015/03/09(月) 21:31:11.28 ID:YsuhcNZs - 訂正しました
for(count = 0, i = 0; i < SHIFT_COUNT + 1; i++) { /* 32 */ http://peace.2ch.net/test/read.cgi/tech/1198344909/269
|
- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
285 :デフォルトの名無しさん[]:2015/03/09(月) 22:13:09.24 ID:YsuhcNZs - シフトしないでできるぞ
|
- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
286 :デフォルトの名無しさん[]:2015/03/09(月) 22:13:58.54 ID:YsuhcNZs - #define BINARY_1 1
#define BINARY_10 2 #define BINARY_100 4 #define BINARY_1000 8 #define BINARY_10000 16 #define BIT_COUNT 32 #include <stdio.h> int main(void) { int count, i, e = 0x00000001; int bits[BIT_COUNT]; int test = BINARY_1 | BINARY_10 | BINARY_1000 | BINARY_10000; /* 00011011b */ for(i = 0; i < BIT_COUNT; i++) { bits[i] = e; e <<= 1; } for(count = 0, i = 0; i < BIT_COUNT; i++) { if(test & bits[i]) { count += 1; } } printf("%d\n", count); return 0; } /* C:\work>shiftand 4 */
|