bug?
Alexandre Oliva
aoliva@redhat.com
Wed Jun 20 07:57:00 GMT 2001
On Jun 19, 2001, Ingo Krabbe <ikrabbe@earthling.net> wrote:
> On 19 Jun 2001, Alexandre Oliva wrote:
>> > That's a kind of why I used ~(~(x^x)<<(sizeof(x)*8-n)).
>> Make the `8' `CHAR_BIT'. BTW, did you consider what happens if x is
>> narrower than size_t (the type of sizeof(x)) for both signed and
>> unsigned integer types?
> Hmm, I considered that sizeof(x) returns the size of bytes which has a
> length of 8 though a char may be longer ?!
sizeof(char) is always 1, but there's no guarantee that 1 byte will
contain exactly 8 bits. That's where CHAR_BIT comes into play.
> Then I considered that ~(x^x) gives a stream of '1' as long as x.
Right. But then, the shift operation causes the result to be promoted
to a type at least as wide as size_t. This may cause sign extension,
if x is a signed type, or zero extension, if x is unsigned. So, you
may get different bit patterns depending on the signedness of x.
--
Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist *Please* write to mailing lists, not to me
More information about the Gcc-help
mailing list