signed int
C99 によると、 orunsigned int
表現にパディング ビットが存在する可能性があります。だから、そのような時代遅れのものを持っている実装がまだあるのだろうか?
3 に答える
新しいC標準から:
一部の Cray プロセッサでは、型 short の精度は 32 ビットですが、64 ビット相当のストレージに保持されます。Unisys A シリーズの符号なし整数型には、符号付き整数表現で符号ビットとして扱われるパディング ビットが含まれています。
...
Harris/6 コンピューターは、2 つの連続する int 型を使用して long 型を表現しました。これは、int の 1 つの符号ビットを無視する必要があることを意味していました。パディングビットとして扱われました。int 型の値表現は 24 ビット幅であり、long は 47 ビットの値表現と 1 つのパディング ビットを持っていました。
C99 の根拠 ( PDF ) セクション 6.2.6.2 §20を引用します。
パディング ビットは、符号なし整数型でユーザーがアクセスできます。たとえば、マシンが 16 ビット short のペア (それぞれ独自の符号ビットを持つ) を使用して 32 ビットを構成し、この 32 ビットで使用される場合
int
、下位の符号ビットshort
は無視されるとしますint
。次に、32 ビット としてsigned int
、32 ビット の値 20 を決定する際に無視されるパディング ビット (32 ビットの中央) がありますsigned int
。ただし、この 32 ビット アイテムが 32 ビット として扱われる場合unsigned int
、そのパディング ビットはユーザーのプログラムに表示されます。C 委員会は、この方法で動作するマシンが存在することを知らされました。これが、パディング ビットが C99 に追加された理由の 1 つです。
したがって、少なくともそのようなものは存在しました。
今日でも残っている奇妙なアーキテクチャに関しては、典型的な例は、奇妙なデータ形式を持つ UNIVAC 1100/2200 シリーズです。
整数パディングを使用していませんが、C コンパイラ マニュアル ( PDF ) を見ると、まだ有益です。
Table 4–4. Size and Range of Unsigned Integer Types
Type Size Range
unsigned short int 18 bits 0 to (2^18)–1
unsigned short
unsigned int 36 bits 0 to (2^36)–2 (see the following note)
unsigned
unsigned long int 36 bits 0 to (2^36)–2 (see the following note)
unsigned long
第 2 巻 ( PDF ) ではCONFORMANCE/TWOSARITH
、負のゼロの解釈を制御するためにコンパイラ キーワードを使用する方法について説明しています。
The MSP430X architecture (an architecture for microcontrollers from Texas Instruments) is a 16 bit architecture (MSP430) expanded to a 20 bit address space with 20 bit registers. The architecture is still byte-addressed with one byte having eight bits. Instructions can generally operate on quantities of 8, 16, and 20 bits.
On this architecture, a compiler might choose to make int
a 20 bit type. Since 20 is not a multiple of 8, 4 or 12 bits of padding have to be added when storing this type in memory.