rurema / doctree

Repository of Japanese Ruby reference manual

Home Page:https://docs.ruby-lang.org/ja/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

オクテットの bit 数に関して

shoka6 opened this issue · comments

commented

下記にある 4 オクテットは 8bits * 4 = 32bits ではないでしょうか。

Base64 は、3 オクテット (8bits * 3 = 24bits) のバイナリコードを ASCII 文字のうちの 65 文字 ([A-Za-z0-9+/] の 64 文字と '=') だけを使用して 4 オクテット (6bits * 4 = 24bits) の印字可能文字列に変換するエンコーディング法です。
 [RFC2045], [RFC4648] で定義されています。

https://docs.ruby-lang.org/ja/latest/library/base64.html

「4 オクテット (6bits * 4 = 24bits)」が難しいですね。
頑張って原文の意味が通るような解釈をすると、ここでは変換前後の情報量が変わらないことを意味しているのかなと思いました。
つまり、変換前の「3 オクテット (8bits * 3 = 24bits)」は全てのbitを使って24 bitsの情報を表しているのに対して、変換後の「4 オクテット (6bits * 4 = 24bits) 」は、1オクテットあたり6bitsだけを使用して、それを4オクテット分使うと結果として同じ情報料の24 bitsになる、ということが言いたいのではないかなと推測しました。

あまりわかりやすい説明ではないと思うので、なにかしら修正するのは賛成です

commented

ご返信ありがとうございます。おかげさまで理解できました。

変換前の「3 オクテット (8bits * 3 = 24bits)」は全てのbitを使って24 bitsの情報を表しているのに対して、変換後の「4 オクテット (6bits * 4 = 24bits) 」は、1オクテットあたり6bitsだけを使用して、それを4オクテット分使うと結果として同じ情報料の24 bitsになる

確かにそれだと 8bits * 4 = 32bits) と書くとさらにややこしくなってしまいますね ...
ぱっといい文章は思いつきませんが、上の内容(変換前の「3 ...)が記述されているとよりわかりやすいかと思います。