11

signed int C99 によると、 orunsigned int表現にパディング ビットが存在する可能性があります。だから、そのような時代遅れのものを持っている実装がまだあるのだろうか?

4

3 に答える 3

14

新しいC標準から:

一部の Cray プロセッサでは、型 short の精度は 32 ビットですが、64 ビット相当のストレージに保持されます。Unisys A シリーズの符号なし整数型には、符号付き整数表現で符号ビットとして扱われるパディング ビットが含まれています。

...

Harris/6 コンピューターは、2 つの連続する int 型を使用して long 型を表現しました。これは、int の 1 つの符号ビットを無視する必要があることを意味していました。パディングビットとして扱われました。int 型の値表現は 24 ビット幅であり、long は 47 ビットの値表現と 1 つのパディング ビットを持っていました。

于 2013-01-02T12:03:37.527 に答える
9

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、負のゼロの解釈を制御するためにコンパイラ キーワードを使用する方法について説明しています。

于 2013-01-02T11:48:43.483 に答える
3

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.

于 2015-07-10T06:50:17.873 に答える