アナタのビット演算テクニック!情報交換トピ

&(AND)
|(OR)
^(XOR)
~(NOT)
>(SHIFT)

など、一度凝りだしたら病みつきなビット演算

・そんなビット演算が好きな方
・bool型で0と1を判定するよりビットで変数を操作するほうが好きな方
・ビット演算子を見てるだけで幸せな気持ちになれる方


などなど、論理演算が好きな方はどうぞですd(゜ー゜)
返信
アバター
せんちゃ
記事: 50
登録日時: 13年前
住所: 江別市東野幌町
連絡を取る:

アナタのビット演算テクニック!情報交換トピ

#1

投稿記事 by せんちゃ » 13年前

アナタが考えた、またはよく使用するビット操作テクニックを
紹介していきましょう。
たとえば

コード:

int i = i^i;
とかこんなのでもOKです!
最後に編集したユーザー せんちゃ on 2010年10月18日(月) 00:38 [ 編集 1 回目 ]
ヽ(*゚д゚)ノ カイバー

アバター
あーる@Reputeless
記事: 84
登録日時: 13年前
住所: 千葉

Re: アナタのビット演算テクニック!情報交換トピ

#2

投稿記事 by あーる@Reputeless » 13年前

float 型のビット列を 整数とみなす
"Floating-point Trick" も研究すると面白いですよ。

コード:

#include <stdio.h> 
 
float AbsF( float _x )
{
	union{ float f; unsigned i; } t;
	t.f = _x;
	t.i &= 0x7fFFffFF;
	return t.f;
}
 
int main()
{
	float f = -1.2f, g = 3.4f;
	printf("%f,%f", AbsF(f), AbsF(g));
	return 0;
}

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: アナタのビット演算テクニック!情報交換トピ

#3

投稿記事 by ISLe » 13年前

ゲームプログラムで役立つネタ二つです。

コード:

#include<stdio.h>
int main(void)
{
	int a, b;

	/* 整数値の交換 */
	a = 123;
	b = 456;
	a ^= b;
	b ^= a;
	a ^= b;
	printf("a=%d, b=%d\n", a, b);

	/* ビットマスクデータのオフセットを求める */
	a = 0x001f; /* 0000000000011111(2) */
	printf("B offset =%d\n", (a & -a));
	a = 0x07e0; /* 0000011111100000(2) */
	printf("R offset =%d\n", (a & -a));
	a = 0xf800; /* 1111100000000000(2) */
	printf("G offset =%d\n", (a & -a));

	return 0;
}

返信

“ビット論理演算が好きな人♪” へ戻る