- ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
292 :デフォルトの名無しさん[]:2015/03/10(火) 16:21:30.80 ID:YECLYm2g - >>275には、テーブルがある。だれかが、なんらかの方法でテーブルを作成した。一般論として、テーブルをつかえば高速になる
const int BITS_COUNT_TABLE[256] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8, };
| - ★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
293 :デフォルトの名無しさん[]:2015/03/10(火) 16:56:39.75 ID:YECLYm2g - #define BINARY_1 1
#define BINARY_10 2 #define BINARY_100 4 #define BINARY_1000 8 #include <stdio.h> int shift_and(int test) { const int SHIFT_COUNT = 7; int count, i, e = 0x00000001; int repetition = SHIFT_COUNT + 1; for(i = 0; i < SHIFT_COUNT; i++) { e <<= 1; } for(count = 0, i = 0; i < repetition; i++) { if(test & e) { count += 1; } e >>= 1; } return count; } int main(void) { int i; for(i = 0; i < 256; i++) { printf("%d, ", shift_and(i) ); } return 0; }
|
|