ゲームプログラマーの個人的なブログに掲示この記事劉、長期的な更新、送信元アドレスを明記してくださいhttps://www.cnblogs.com/xiaohutu/p/10951911.html
あなたは、メッセージを残してくださいを追加または変更する必要があります〜
1.テイクビットnの値(右から)
INT R =(V >> N)&1。
2.(右から)1位
V = V | (1個の << N)。
3.(右から)否定ビット
V = V ^(1個の << N)。
4.最後に、1を0に設定されています
V = V・(V - 1)。
5.最後に、0が1に設定されています
V = V | (V + 1)。
6.分析パリティ
(V&1)
7.絶対値を計算します
int型、A = V >> 31 。 INT R =(V ^ A) - ; 或者INT R =(V + A)^。
8.剰余
// V%(2 ^ n)は取り外す前にnビット値に変換することができる INT MOD&V =(2 ^ N - 。1)。
9 2 ^ Nによって
INT R = V << N。
2のn乗に加えて、10
INT R = V >> N。
2つ以上に加えて、11
INTの R = V&1。
12.分析文VはB ==します:;?
V = A ^ B ^ V。
13.aおよびbスワップ
ボイドスワップ(INT&X、INT&Y) { X ^ = Y。 Y ^ = X。 X ^ = Y。 }
14. Nは、2の累乗であります
ブール POWER2(int型V) { リターン((V&(V - 1))== 0)&&(V =!0 ); }
15、平均整数
INT平均(int型のx、int型のY) { リターン(X&Y)+(^ Y(X)>> 1 )。 }
16 Vの兆候
int型V; int型のログイン; // -1または0 ・サイン= - (V < 0 ); サイン >> = Vを(はsizeof(int型 CHAR_BIT *) - 1。); // -1または+1を付けました = +サイン1。 |(V >>(はsizeof(int型)* CHAR_BIT - 1 ); // -1を返し、0、 !=(Vサイン= 0)| - (int型)((符号なし整数)((int型)V)> >(はsizeof(int型)* CHAR_BIT - 1。 )); サイン =(V =!0)| (V >>(はsizeof(int型)* CHAR_BIT - 1 )); 署名 =(V> 0) - (V < 0)。
17.コントラストは二つのシンボルか否かを判断します
BOOL F =((A ^ B)< 0)。
何の枝分声明ませんまたはMAX機能18
// 分(A、B) のint R = B ^((^ B)および- (< B))。 // MAX(a、b)は INT R = A ^((A ^ B)および- (<B))。
19.かどうかは、(判決文のなしで)否定しました
BOOL 負; INTの R =(V ^陰性)+陰性;
合わせたマスク20をマスクAおよびBは、ビットマスク値bは、の値に対し、1であります
符号なし整数を、R = A ^((A ^ B)&マスク)。
21進数の計算N Vの1
符号なしint型のV; 符号なし整数N; ため(N = 0 ; V N ++ ) 、V&V = - 1
22バイナリビット反転
符号なし整数 逆(符号なしレジスタint型X)を { X =(((X&0xaaaaaaaa)>> 1)|((X&0x55555555)<< 1 ))。 X =(((X&0xcccccccc)>> 2)|((X&0x33333333)<< 2 )); X =(((X&0xf0f0f0f0)>> 4)|((X&0x0f0f0f0f)<< 4 ))。 X =(((X&0xff00ff00)>> 8)|((X&8 ))。 リターン((X >> 16)|(X << 16));
}
22.リバース2ビット
符号なし整数 (符号なしレジスタ逆のint X)を { 符号なしレジスタINT Y = 0x55555555を、 X =(((X >> 1)&Y)|((X&Y)<< 1 ))。 Y = 0x33333333 。 X =(((X >> 2)&Y)|((X&Y)<< 2 ))。 Y = 0x0f0f0f0f 。 X =(((X >> 4)&Y)|((X&Y)<< 4 ))。 Y = 0x00ff00ff 。 X =(((X >>)&Y)| ((X&Y)<< 8 ))。 リターン((X >> 16)|(X << 16 )); }
23. 0の浮動小数点決意
#define FASI(F)(*((INT *)及び(F))) の#define FasUI(F)(*((unsigned int型*)及び(F))) の#define LT0(F)(FasUI(F) > 0x80000000U) の#define LE0(F)(FASI(F)<= 0) の#define GT0(F)(FASI(F)> 0) の#define GE0(F)(FasUI(F)<= 0x80000000U)
24.次に2の電源
符号なし整数nextpowerof2(符号なしレジスタint型X)を { X | =(X >> 1 )。 X | =(X >> 2 )。 X | =(X >> 4 ); X | =(X >> 8 ); X | =(X >> 16 ); リターン(X + 1 )。 }
24最上位ビットが1(2の電源に)予約します
符号なし整数lastpowerof2(符号なしレジスタint型X)を { X | =(X >> 1 )。 X | =(X >> 2 )。 X | =(X >> 4 ); X | =(X >> 8 ); X | =(X >> 16 ); リターン(X&〜(X >> 1 )); }