0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C言語で0から10000まで計算せずに2進数を求めて一覧表示してみた

Posted at

C言語で10進数を2進数で表示するときに10進数を2進数に変換するために計算を行っていると思いますが、少しの計算でも量が多くなると、時間がかかるようになる?かと思います。しかし共用体を使って、変数に格納された10進数の内部データをビット単位で表示していけば、2進数への変換の計算の時間を省く事が出来るのではないかと思います。間違ってたらすみません。

#include <stdio.h>
#include <conio.h>

struct sample
{
	unsigned a : 1;
	unsigned b : 1;
	unsigned c : 1;
	unsigned d : 1;
	unsigned e : 1;
	unsigned f : 1;
	unsigned g : 1;
	unsigned h : 1;

	unsigned i : 1;
	unsigned j : 1;
	unsigned k : 1;
	unsigned l : 1;
	unsigned m : 1;
	unsigned n : 1;
	unsigned o : 1;
	unsigned p : 1;
};

union key_type {
	short sh;
	struct sample bits;
} key;

int main(void)
{

	for (int i = 0; i <= 10000; i++) {
		key.sh = i;
		printf("\n%dのバイナリコード: ",i);

		if (key.bits.p) printf("1");
		else printf("0");
		if (key.bits.o) printf("1");
		else printf("0");
		if (key.bits.n) printf("1");
		else printf("0");
		if (key.bits.m) printf("1");
		else printf("0");
		printf(" ");

		if (key.bits.l) printf("1");
		else printf("0");
		if (key.bits.k) printf("1");
		else printf("0");
		if (key.bits.j) printf("1");
		else printf("0");
		if (key.bits.i) printf("1");
		else printf("0");
		printf(" ");

		if (key.bits.h) printf("1");
		else printf("0");
		if (key.bits.g) printf("1");
		else printf("0");
		if (key.bits.f) printf("1");
		else printf("0");
		if (key.bits.e) printf("1");
		else printf("0");
		printf(" ");

		if (key.bits.d) printf("1");
		else printf("0");
		if (key.bits.c) printf("1");
		else printf("0");
		if (key.bits.b) printf("1");
		else printf("0");
		if (key.bits.a) printf("1");
		else printf("0");

		printf("\n");
	}
	return 0;
}

実行結果

0のバイナリコード: 0000 0000 0000 0000

1のバイナリコード: 0000 0000 0000 0001

2のバイナリコード: 0000 0000 0000 0010

           ~~~~~~~~~~

9997のバイナリコード: 0010 0111 0000 1101

9998のバイナリコード: 0010 0111 0000 1110

9999のバイナリコード: 0010 0111 0000 1111

10000のバイナリコード: 0010 0111 0001 0000
0
0
17

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?