ページ 11

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

Posted: 2010年10月17日(日) 23:12
by せんちゃ
アナタが考えた、またはよく使用するビット操作テクニックを
紹介していきましょう。
たとえば

コード:

int i = i^i;
とかこんなのでもOKです!

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

Posted: 2010年10月18日(月) 00:00
by あーる@Reputeless
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;
}

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

Posted: 2010年10月18日(月) 00:38
by ISLe
ゲームプログラムで役立つネタ二つです。

コード:

#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;
}