CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/my_bit.h
浏览该文件的文档。
00001 / * 
00002  
00003      S o m e   u s e f u l   b i t   f u n c t i o n s 
00004  
00005  * / 
00006  
00007  C _ M O D E _ S T A R T 
00008  
00009  # i f d e f   H A V E _ I N L I N E 
00010  
00011  e x t e r n   c o n s t   c h a r   _ m y _ b i t s _ n b i t s [ 2 5 6 ] ; 
00012  
00013  e x t e r n   c o n s t   u c h a r   _ m y _ b i t s _ r e v e r s e _ t a b l e [ 2 5 6 ] ; 
00014  
00015  / * 
00016  
00017      F i n d   s m a l l e s t   X   i n   2 ^ X   > =   v a l u e 
00018  
00019      T h i s   c a n   b e   u s e d   t o   d i v i d e   a   n u m b e r   w i t h   v a l u e   b y   d o i n g   a   s h i f t   i n s t e a d 
00020  
00021  * / 
00022  
00023  S T A T I C _ I N L I N E   u i n t   m y _ b i t _ l o g 2 ( u l o n g   v a l u e ) 
00024  
00025  { 
00026  
00027      u i n t   b i t ; 
00028  
00029      f o r   ( b i t = 0   ;   v a l u e   >   1   ;   v a l u e > > = 1 ,   b i t + + )   ; 
00030  
00031      r e t u r n   b i t ; 
00032  
00033  } 
00034  
00035  S T A T I C _ I N L I N E   u i n t   m y _ c o u n t _ b i t s ( u l o n g l o n g   v ) 
00036  
00037  { 
00038  
00039  # i f   S I Z E O F _ L O N G _ L O N G   >   4 
00040  
00041      / *   T h e   f o l l o w i n g   c o d e   i s   a   b i t   f a s t e r   o n   1 6   b i t   m a c h i n e s   t h a n   i f   w e   w o u l d 
00042  
00043            o n l y   s h i f t   v   * / 
00044  
00045      u l o n g   v 2 = ( u l o n g )   ( v   > >   3 2 ) ; 
00046  
00047      r e t u r n   ( u i n t )   ( u c h a r )   ( _ m y _ b i t s _ n b i t s [ ( u c h a r )     v ]   + 
00048  
00049                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v   > >   8 ) ]   + 
00050  
00051                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v   > >   1 6 ) ]   + 
00052  
00053                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v   > >   2 4 ) ]   + 
00054  
00055                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v 2 ) ]   + 
00056  
00057                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v 2   > >   8 ) ]   + 
00058  
00059                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v 2   > >   1 6 ) ]   + 
00060  
00061                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v 2   > >   2 4 ) ] ) ; 
00062  
00063  # e l s e 
00064  
00065      r e t u r n   ( u i n t )   ( u c h a r )   ( _ m y _ b i t s _ n b i t s [ ( u c h a r )     v ]   + 
00066  
00067                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v   > >   8 ) ]   + 
00068  
00069                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v   > >   1 6 ) ]   + 
00070  
00071                                                    _ m y _ b i t s _ n b i t s [ ( u c h a r )   ( v   > >   2 4 ) ] ) ; 
00072  
00073  # e n d i f 
00074  
00075  } 
00076  
00077  S T A T I C _ I N L I N E   u i n t   m y _ c o u n t _ b i t s _ u s h o r t ( u s h o r t   v ) 
00078  
00079  { 
00080  
00081      r e t u r n   _ m y _ b i t s _ n b i t s [ v ] ; 
00082  
00083  } 
00084  
00085  
00086  
00087  / * 
00088  
00089      N e x t   h i g h e s t   p o w e r   o f   t w o 
00090  
00091      S Y N O P S I S 
00092  
00093          m y _ r o u n d _ u p _ t o _ n e x t _ p o w e r ( ) 
00094  
00095          v       V a l u e   t o   c h e c k 
00096  
00097      R E T U R N 
00098  
00099          N e x t   o r   e q u a l   p o w e r   o f   2 
00100  
00101          N o t e :   0   w i l l   r e t u r n   0 
00102  
00103      N O T E S 
00104  
00105          A l g o r i t h m   b y   S e a n   A n d e r s o n ,   a c c o r d i n g   t o : 
00106  
00107          h t t p : / / g r a p h i c s . s t a n f o r d . e d u / ~ s e a n d e r / b i t h a c k s . h t m l 
00108  
00109          ( O r i g n a l   c o d e   p u b l i c   d o m a i n ) 
00110  
00111          C o m m e n t s   s h o w s   h o w   t h i s   w o r k s   w i t h   0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 
00112  
00113  * / 
00114  
00115  S T A T I C _ I N L I N E   u i n t 3 2   m y _ r o u n d _ u p _ t o _ n e x t _ p o w e r ( u i n t 3 2   v ) 
00116  
00117  { 
00118  
00119      v - - ;             / *   0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0   * / 
00120  
00121      v | =   v   > >   1 ;       / *   0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1   * / 
00122  
00123      v | =   v   > >   2 ;       / *   0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1   * / 
00124  
00125      v | =   v   > >   4 ;       / *   0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1   * / 
00126  
00127      v | =   v   > >   8 ;       / *   0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1   * / 
00128  
00129      v | =   v   > >   1 6 ;         / *   0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   * / 
00130  
00131      r e t u r n   v + 1 ;       / *   1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   * / 
00132  
00133  } 
00134  
00135  S T A T I C _ I N L I N E   u i n t 3 2   m y _ c l e a r _ h i g h e s t _ b i t ( u i n t 3 2   v ) 
00136  
00137  { 
00138  
00139      u i n t 3 2   w = v   > >   1 ; 
00140  
00141      w | =   w   > >   1 ; 
00142  
00143      w | =   w   > >   2 ; 
00144  
00145      w | =   w   > >   4 ; 
00146  
00147      w | =   w   > >   8 ; 
00148  
00149      w | =   w   > >   1 6 ; 
00150  
00151      r e t u r n   v   &   w ; 
00152  
00153  } 
00154  
00155  S T A T I C _ I N L I N E   u i n t 3 2   m y _ r e v e r s e _ b i t s ( u i n t 3 2   k e y ) 
00156  
00157  { 
00158  
00159      r e t u r n 
00160  
00161          ( _ m y _ b i t s _ r e v e r s e _ t a b l e [   k e y             &   2 5 5 ]   < <   2 4 )   | 
00162  
00163          ( _ m y _ b i t s _ r e v e r s e _ t a b l e [ ( k e y > >   8 )   &   2 5 5 ]   < <   1 6 )   | 
00164  
00165          ( _ m y _ b i t s _ r e v e r s e _ t a b l e [ ( k e y > > 1 6 )   &   2 5 5 ]   < <     8 )   | 
00166  
00167            _ m y _ b i t s _ r e v e r s e _ t a b l e [ ( k e y > > 2 4 )             ] ; 
00168  
00169  } 
00170  
00171  # e l s e     / *   H A V E _ I N L I N E   * / 
00172  
00173  e x t e r n   u i n t   m y _ b i t _ l o g 2 ( u l o n g   v a l u e ) ; 
00174  
00175  e x t e r n   u i n t 3 2   m y _ r o u n d _ u p _ t o _ n e x t _ p o w e r ( u i n t 3 2   v ) ; 
00176  
00177  u i n t 3 2   m y _ c l e a r _ h i g h e s t _ b i t ( u i n t 3 2   v ) ; 
00178  
00179  u i n t 3 2   m y _ r e v e r s e _ b i t s ( u i n t 3 2   k e y ) ; 
00180  
00181  e x t e r n   u i n t   m y _ c o u n t _ b i t s ( u l o n g l o n g   v ) ; 
00182  
00183  e x t e r n   u i n t   m y _ c o u n t _ b i t s _ u s h o r t ( u s h o r t   v ) ; 
00184  
00185  # e n d i f   / *   H A V E _ I N L I N E   * / 
00186  
00187  C _ M O D E _ E N D 
00188  
00189  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义