Article View: comp.std.c
Article #4870Re: Bit-field sizes
From: Tanmoy Bhattacharya
Date: Wed, 06 Mar 1996 15:45
Date: Wed, 06 Mar 1996 15:45
62 lines
3231 bytes
3231 bytes
In article <nzRPxQ9ytZZA084yn@csn.net> thads@csn.net (Thad Smith) writes: TS: Can the size of a bit-field, measured in bits, exceed the size of an TS: int? The description of bit-fields describes it as an integral TS: type with a (programmer-)specified number of bits, not specifically TS: constrained in size. ANSI Classic section 3.2.1.1 says, however, that TS: bit-fields are promoted to either int or unsigned int. This would TS: seem to prohibit promoting a large bit-field to a long. If so, why TS: was this constraint imposed? 6.5.2.1 constraints: The expression that specifies the width of a bit-field ... shall not exceed the number of bits in an ordinary object of compatible type. So, the number of bits cannot exceed the number of bits in an int or unsigned int. TS: TS: Secondly, is the storage unit within which bit-fields are allocated TS: constrained to be a single size or can it vary, depending on the size TS: of the bit fields? I see nothing in the standard prohibiting TS: different size storage units for bit-fields. Also bit-fields are Neither do I. TS: explicitly allowed to span multiple storage units, at least if the TS: bit-field is not the first in a structure (the use of the word "may" TS: makes the requirement for the first bit-field ambiguous with regard to TS: storage in a single unit). Depends on whether an addressable storage unit has to occur in multiples of bytes. (The standard says that bytes are addressable storage units, but not the converse. If addressable means that & can be applied to it, again, the smallest addressable unit is a byte). If it has to, then a width 4 bit field followed by width 2 bit field must both belong to the same addressable storage unit, and neither can span storage units. TS: TS: If different size storage units are allowed or any bit-field is TS: allowed to span multiple units, the size of a struct containing TS: bit-fields might be 1 byte, while bit-fields could be allocated up to TS: the size (in bits) of ints, possibly four bytes in a particular TS: implementation, by choosing larger storage units for larger TS: bit-fields. I guess so. TS: TS: Is anyone aware of an implementation using bit-field storage units TS: smaller than int? Cheers Tanmoy -- tanmoy@qcd.lanl.gov(128.165.23.46) DECNET: BETA::"tanmoy@lanl.gov"(1.218=1242) Tanmoy Bhattacharya O:T-8(MS B285)LANL,NM87545 H:#9,3000,Trinity Drive,NM87544 Others see <gopher://yaleinfo.yale.edu:7700/00/Internet-People/internet-mail>, <http://alpha.acast.nova.edu/cgi-bin/inmgq.pl>or<ftp://csd4.csd.uwm.edu/pub/ internetwork-mail-guide>. -- <http://nqcd.lanl.gov/people/tanmoy/tanmoy.html> fax: 1 (505) 665 3003 voice: 1 (505) 665 4733 [ Home: 1 (505) 662 5596 ]
Technical Details
Message-ID:
<TANMOY.96Mar6084502@qcd.lanl.gov>Path:
arc1-ca.pugleaf.net!newshost.lanl.gov!tanmoyReferences:
<nzRPxQ9ytZZA084yn@csn.net>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!newshost.lanl.gov!tanmoy From: tanmoy@qcd.lanl.gov (Tanmoy Bhattacharya) Newsgroups: comp.std.c Subject: Re: Bit-field sizes Date: 06 Mar 1996 15:45:02 GMT Organization: Los Alamos National Laboratory Message-ID: <TANMOY.96Mar6084502@qcd.lanl.gov> References: <nzRPxQ9ytZZA084yn@csn.net> NNTP-Posting-Host: qcd.lanl.gov Mime-Version: 1.0 Content-Type: text In-reply-to: thads@csn.net's message of 5 Mar 1996 23:49:35 -0700