ビット・オペレーティング・スキル

ゲームプログラマーの個人的なブログに掲示この記事劉、長期的な更新、送信元アドレスを明記してください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、INTY)
{ 
     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を(はsizeofint型 CHAR_BIT *) - 1。);
 // -1または+1を付けました 
= +サイン1。 |(V >>(はsizeofint型)* CHAR_BIT - 1 );
 // -1を返し、0、 
!=(Vサイン= 0)| - (int型)((符号なし整数)((int型)V)> >(はsizeofint型)* CHAR_BIT - 1。 )); 
サイン =(V =!0)| (V >>(はsizeofint型)* 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 )); 
}

 

おすすめ

転載: www.cnblogs.com/xiaohutu/p/10951911.html