質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

5回答

6502閲覧

1バイトのビット数の標準規格知りませんか?

Chironian

総合スコア23272

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

9グッド

3クリップ

投稿2016/01/28 03:05

C/C++言語における1バイトのビット数は8ビットと思っていたのですが、ここによるとそうではないようです。
(IBM発祥のローカル用語とは聞いてましたが、無定義とはびっくり。)

C11のドラフトn1570をみてみたら、確かに下記の記述がありました。

バイトはアドレス可能な最小の単位でビット数は実装依存
バイトはCHAR_BITで構成される
CHAR_BITは8以上

更にググってみたら、こんな記事がありました。1バイト=8ビットとの定義は存在しなかったそうです。
そして、次のように書かれているのですが、この規格番号をご存知の方、いらっしゃいませんか?

ISO(国際標準化機構)やIEC(国際電気標準会議)が「1バイトは8bitとしましょう」という意見を採択したのは2008年です。

バイト=8ビットとする標準規格があるのなら、色々安心できますので。(1バイト!=8ビットな処理系をサポートしない強い根拠にできる等)

hsk, miyabi-sun, naoyan, 5o5o_wagon, ps13zier, ikuwow, yohhoy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Stripe

2016/01/28 03:26

質問は「1byteのビット数」でいいんですか?「C言語におけるchar型のビット数」ではなくて?
Chironian

2016/01/28 03:38

その通りです。でも、もしC言語におけるchar型のビット数=8ビットとの規格があればそれはそれで嬉しいです。(たぶん、ないと予想しているのでこのような質問になりました。)
guest

回答5

0

ベストアンサー

"IEC 80000-13:2008 Quantities and units -- Part 13: Information science and technology" が該当規格ようです。(検索で見つけただけで原本は持っていません。CHF 154也)

Wikipedia.ja - ISO/IEC 80000より:

ISO/IEC 80000は全てのSI単位を含んでいるが、SI単位以外の物も含んでいる。ISO/IEC 80000に含まれる非SI単位には、データ量の単位(ビット・バイト)、情報量の単位(シャノン・ナット・ハートレー)、通信トラヒックの単位(アーラン)、レベルの単位(デシベル・ネーパ)がある。

Wikipedia.en - Byteより:

The de facto standard of eight bits is a convenient power of two permitting the values 0 through 255 for one byte. The international standard IEC 80000-13 codified this common meaning.

投稿2016/01/28 03:55

yohhoy

総合スコア6189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/01/28 04:31 編集

おお!! ありがとうございます。 IEC 80000-13の該当箇所が無償で公開されてないか探してみました。 2万円弱払えば買えるようですね。JISに80000-1,3~10は取り込まれているようですが、13はないみたいでした。残念。 流石にこれが本当に問題になるケースは考えにくいので、引用して頂いたByteのWikipediaの説明で十分です。 ありがとうございました。
guest

0

もう解決済みのようなので、小話をひとつ。
通信の世界では Byte と言わずに Octet オクテットと言います。
Octa=8ですから、明らかに8ビット=1オクテットと判ります。

投稿2016/02/02 11:06

tsuntsun

総合スコア199

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問とは関係ありませんが、C言語が誕生したコンピュータPDPシリーズは、(シリーズによって)12ビット、16ビット、18ビットと、いろいろなワード長を持っていたので、そもそも8ビットという概念が希薄だったかもしれません。
あと、C言語の規格では「処理系定義の動作」「未定義の動作」「未規定の動作」がそれぞれ別ものとして定義されていますので、「無定義」という表現は使わないほうが良いかと思います。

投稿2016/02/02 06:18

AOKINAO

総合スコア268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

上の方と同じことになってますね(笑)
削除できないみたいなので、残しておきます。

JIS X3010:2003の5.2.4.2.1に、1バイトは8ビット以上と定義されています。
http://kikakurui.com/x3/X3010-2003-01.html

JIS X3010:2003は、C99と呼ばれているC言語の国際標準(ISO/IEC 9899:1999)を、
日本語に翻訳したものなので、中身は国際標準と同じです。
(最新は、ISO/IEC X3010:2011のC11です。これに相当するJIS規格は、まだ出ていません。)

投稿2016/01/28 11:15

編集2016/01/28 11:28
JADEN

総合スコア106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/01/28 12:16

回答ありがとうございます。 IEC 80000-13:2008で1バイト=8ビットと定義された以降のC11でも「1バイトは8ビット以上」と規定されています。恐らく互換性をまだ捨てるわけには行かなかったのだろうと思います。つまり、まだ1バイト>8ビットな処理系がどこかで稼働しているってことかも?
guest

0

処理系は纏まった単位の総称です。

ちょっと前だと、処理系っていうと、あぁ、68系ね、と頭の中で展開されたものですが、つまり、クロスプラットフォームです。土台から何からまるっきり違う、ブランチ立ててどうこうの話以前に専用設計が求められる。こういう状況で登場したのが、プラットホーム問わず動作可能な、javaみたいな中間言語系です。
現在時点の話でxbit プラットホームが実在するなら、差分吸収は言語処理系にお任せです。ビット処理はエミュレーションライブラリ経由で解決するので。いやいや、ネイティブでしょ、って言われても現存しない以上話を展開するのは無意味です。クライアントに仮定ですけど、ってことで話を膨らませるのはタバコ部屋だけです。
なので、あっちはサポートしないって強く言えないでづ。もはやこの話自体無意味です。近いうち、16bit=1byteのcpuが登場したとき、差分吸収は現行cpuで既に実現してるように、マイクロコードで行われ、8bit=1byteのコードがそのまま動作するが、本来の性能を発揮したければ、専用コンパイラでコンパイルしてください。但し、osがマイクロカーネルのms-dos しか無いので、guiは動きません。で、競ってosメーカーが最新企画に対応したosをリリースする。既存製品は何もいじらないでしばらくは動作する。
インテルが、16ビットコンパイルされたコードの動作保証やめたのは、64が出だした頃ですよね。オーバライドプレフィックスと16/(32/16)/32/64ビット動作モード全部動作保証するのは大変でしょう。なぜ16bit切り捨てたのか理由は知りませんが。
---------------- 追記
あーなんかまたやっちゃったかも。言葉尻を捉えて全体見ないのはよく無いです。反省。削除せずに残しておきます。2016/1/28

投稿2016/01/28 04:12

編集2016/01/28 04:15
ipadcaron

総合スコア1693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問