トップページ > プログラム > 2015年03月09日 > YsuhcNZs

書き込み順位&時間帯一覧

4 位/179 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000000000012232010



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
282
★初心者以前の質問に雪崩のように答えるスレ 3★ [転載禁止]©2ch.net
C言語をやりたいんですが

書き込みレス一覧

★初心者以前の質問に雪崩のように答えるスレ 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)
{
&amp;#160;&amp;#160;const int SHIFT_COUNT = 31;
&amp;#160;&amp;#160;int count, i, msb;
&amp;#160;&amp;#160;int e = 0x00000001;
&amp;#160;&amp;#160;int test = BINARY_10 | BINARY_100 | BINARY_1000; /* 00001110b */

&amp;#160;&amp;#160;for(i = 0; i < SHIFT_COUNT; i++) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;e <<= 1;
&amp;#160;&amp;#160;}

&amp;#160;&amp;#160;for(count = 0, i = 0; i < SHIFT_COUNT; i++) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;if(test &amp; e) {
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;count += 1;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;}
&amp;#160;&amp;#160;&amp;#160;&amp;#160;e >>= 1;
&amp;#160;&amp;#160;}

&amp;#160;&amp;#160;printf("%d\n", count);
&amp;#160;&amp;#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
*/


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。