ページ 1 / 1
アナタのビット演算テクニック!情報交換トピ
Posted: 2010年10月17日(日) 23:12
by せんちゃ
アナタが考えた、またはよく使用するビット操作テクニックを
紹介していきましょう。
たとえば
とかこんなのでも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;
}