[comp.lang.c] Better way to generate a mask?

pinard@IRO.UMontreal.CA (Francois Pinard) (05/29/91)

I just thought asking to the net.  Which of the following is better?
And of course, why?

---------------------------------------------------------------------->
/* This macro generates a mask of NUMBER one bits, right adjusted.  */

#define MASK(number) \
  (~(~0 << (number)))
----------------------------------------------------------------------<

---------------------------------------------------------------------->
/* This macro generates a mask of NUMBER one bits, right adjusted.  */

#define MASK(number) \
  ((1 << (number)) - 1)
----------------------------------------------------------------------<
--
Franc,ois Pinard          ``Vivement GNU!''         pinard@iro.umontreal.ca
(514) 588-4656    cp 886 L'Epiphanie (Qc) J0K 1J0    ...!uunet!iros1!pinard