1. ホーム
  2. c++

[解決済み] 1バイト=8ビットのシステム?重複

2023-03-10 19:41:56

質問

いつもこんな文章を読んでいます。

1バイトが8ビットの大きさであることを当てにしてはいけない

使う CHAR_BIT ビットとバイトを変換する定数として、8 の代わりに

などなど。これが当てはまる、今日の現実のシステムにはどのようなものがあるのでしょうか? (これに関してCとC++の違いがあるのか、それとも実際には言語にとらわれないものなのか、私にはよくわかりません。必要であれば再タグ付けしてください)。

どのように解決するのですか?

古いマシンでは、8 ビットより小さいコードがかなり一般的でしたが、そのほとんどはもう何年も前に死蔵されています。

C および C++ では 最小 のために 8 ビットの char 少なくとも C89 標準にさかのぼります。[編集:例えば、C90, §5.2.4.2.1 は、以下のように要求しています。 CHAR_BIT >= 8 と UCHAR_MAX >=255です。C89では、別のセクション番号(I を信じる は§2.2.4.2.1)ですが、内容は同じです]。彼らは "char" と "byte" を本質的に同義語として扱っています[Edit: 例えば。 CHAR_BIT は次のように記述されています: "ビットフィールド (byte) でない最小のオブジェクトのビット数 "]。

しかし、現在のマシン (ほとんどが DSP) では、最小の型が 8 ビットより大きく、最低でも 12 ビット、14 ビット、あるいは 16 ビットがかなり一般的になっています。Windows CE もほぼ同じで、その最小の型は (少なくとも Microsoft のコンパイラーでは) 16 ビットです。これらは ではありません。 しかし char という名前の型をサポートしないという (非適合) 方法をとっています。 char という名前の型をサポートしないという (不適合な) 方法をとっています。