home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.c      Meh, in C you gotta define EVERYTHING      243,242 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 242,065 of 243,242   
   bart to Waldek Hebisch   
   Re: _BitInt(N)   
   23 Nov 25 13:59:59   
   
   From: bc@freeuk.com   
      
   On 23/11/2025 13:32, Waldek Hebisch wrote:   
   > Philipp Klaus Krause  wrote:   
   >> Am 22.10.25 um 14:45 schrieb Thiago Adams:   
   >>>   
   >>>   
   >>> Is anyone using or planning to use this new C23 feature?   
   >>> What could be the motivation?   
   >>>   
   >>>   
   >>   
   >> Saving memory by using the smallest multiple-of-8 N that will do.   
   >   
   > IIUC nothing in the standard says that it is smallest multiple-of-8.   
   > Using gcc-15.1 on AMD-64 is get 'sizeof(_BitInt(22))' equal to 4,   
   > while the number cound fit in 3 bytes.   
      
   The rationale mentions a use-case where there is a custom processor that   
   might actually have a 22-bit hardware types.   
      
   Implementing such odd-size types on regular 8/16/32/64-bit hardware is   
   full of problems if you want to do it without padding (in order to get   
   the savings). On even with padding (to get the desired overflow semantics).   
      
   Such as working out how pointers to them will work.   
      
      
   >> Also   
   >> being able to use bit-fields wider than int.   
   >   
   > For me main gain is reasonably standard syntax for integers bigger   
   > that 64 bits.   
      
   Standard syntax I guess would be something like int128_t and int256_t.   
   Such wider integers tend to be powers of two.   
      
   But there are two problems with _BitInt:   
      
   * Any odd sizes are allowed, such as _BitInt(391)   
      
   * There appears to be no upper limit on size, so _BitInt(2997901) is a   
   valid type   
      
   So what is the result type of multiplying values of those two types?   
      
   Integer sizes greater than 1K or 2K bits should use an arbitrary   
   precision type (which is how large _BitInts will likely be implemented   
   anyway), where the precision is a runtime attribute.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca