[eside-ghost] Bitwise operations en C

Saúl Ibarra saghul en gmail.com
Mie Mar 19 10:14:38 CET 2008


Hoola!

Tengo esta dudilla de C que me asalta desde hace tiempo, y tengo ganas
de resolver :)

Para qué se usan realmente las operaciones de bit en C? Porque leyengo
mucho código leo cosas como

#define MAX_KOSA (4096 >> 2)

lo que vendría siendo lo mismo que

#define MAX_KOSA 1024

no?

y ya por rizar un poco el rizo os pego un trozo de código de la
aplicación Dial de Asterisk, que me desconcierta un poco más...

####
00222 enum {
00223    OPT_ANNOUNCE =    (1 << 0),
00224    OPT_RESETCDR =    (1 << 1),
00225    OPT_DTMF_EXIT =      (1 << 2),
00226    OPT_SENDDTMF =    (1 << 3),
00227    OPT_FORCECLID =      (1 << 4),
00228    OPT_GO_ON =    (1 << 5),
00229    OPT_CALLEE_HANGUP =  (1 << 6),
00230    OPT_CALLER_HANGUP =  (1 << 7),
00231    OPT_PRIORITY_JUMP =  (1 << 8),
00232    OPT_DURATION_LIMIT = (1 << 9),
00233    OPT_MUSICBACK =      (1 << 10),
00234    OPT_CALLEE_MACRO =   (1 << 11),
00235    OPT_SCREEN_NOINTRO = (1 << 12),
00236    OPT_SCREEN_NOCLID =  (1 << 13),
00237    OPT_ORIGINAL_CLID =  (1 << 14),
00238    OPT_SCREENING =      (1 << 15),
00239    OPT_PRIVACY =     (1 << 16),
00240    OPT_RINGBACK =    (1 << 17),
00241    OPT_DURATION_STOP =  (1 << 18),
00242    OPT_CALLEE_TRANSFER =   (1 << 19),
00243    OPT_CALLER_TRANSFER =   (1 << 20),
00244    OPT_CALLEE_MONITOR = (1 << 21),
00245    OPT_CALLER_MONITOR = (1 << 22),
00246    OPT_GOTO =     (1 << 23),
00247    OPT_OPERMODE =       (1 << 24),
00248    OPT_CALLEE_PARK = (1 << 25),
00249    OPT_CALLER_PARK = (1 << 26),
00250    OPT_IGNORE_FORWARDING = (1 << 27),
00251 } dial_exec_option_flags;
00252
00253 #define DIAL_STILLGOING       (1 << 30)
00254 #define DIAL_NOFORWARDHTML    (1 << 31)
#####

Si alguien pudiera explicarme porqué se hacen así las cosas se lo
agradecería mucho :)

Thnx!

-- 
Saúl -- "Nunca subestimes el ancho de banda de un camión lleno de disketes."
----------------------------------------------------------------
http://www.saghul.net/


Más información sobre la lista de distribución eside-ghost