[cfe-dev] Inconsistent types used to represent bitwidth
Hartmut Kaiser
hartmut.kaiser at gmail.com
Thu Oct 4 08:07:37 PDT 2007
Cedric,
> >> > IIUC, the bitwidth is most of the time the number of
> bits needed to
> >> > represent the size, i.e. 32 for uint32_t. In this case 64 is the
> >> > largest number these kind of variables will ever hold, no?
> >>
> >> Yes, except that what is the size of "uint32_t[100000000000LL]" ?
> >
> > sizeof(uint32_t[100000000000LL]) < 2^64,
> >
> > so the size is representable with 64 bits, which means the
> > corresponding bitwidth is not even '64', which conveniently
> fits into a int8_t.
> >
> > But probably I'm getting something really wrong here.
> > Regards Hartmut
>
> I think we lost the correct definition of bitwith along the way.
> quoting earlier post from this thread:
>
> > >>> recognized, that the bitwith (size of a type in bits) is
>
> for me, bitwith( X ) == 8*sizeof( X )
If bitwidth is 8*sizeof(X), then you're right and I apologize for the
confusion.
> If we speak of the same things, this was done in order to
> thread the size of bitfield member in an uniform manner with
> other 'normal'
> variable.
Hmmm. Obviously I'm lost here or I'm mixing something up. (Please disregard
my statement you quoted above if it increases the confusion)
The point is, that if I'm looking at
clang/Basic/TargetInfo.h:+140:
/// getLongInfo - Return the size of 'signed long' and 'unsigned long' for
/// this target, in bits.
void getLongInfo(uint64_t &Size, unsigned &Align, SourceLocation Loc) {
Size = Align = 32; // FIXME: implement correctly: wrong for
ppc64/x86-64
}
/// getLongLongInfo - Return the size of 'signed long long' and
/// 'unsigned long long' for this target, in bits.
void getLongLongInfo(uint64_t &Size, unsigned &Align,
SourceLocation Loc) {
Size = Align = 64; // FIXME: implement correctly.
}
we use uint64_t for storing numbers which will have the max value of '64',
no?
Does this mean we need 64 bits to represent the _size_ of the variable or
does this mean we need 64 bits to represent the variable itself?
And sorry again for the noise.
Regards Hartmut
More information about the cfe-dev
mailing list