コンテンツにスキップ

ビットとバイト長計算ツール - 無料のデータサイズツール

整数、16進数文字列、テキスト文字列のビット長とバイト長を計算する無料ツール。UTF-8、UTF-16、UTF-32、ASCII、Latin-1といった各文字エンコーディングごとの計算式を示しており、開発者やネットワーク設計者の日々の実務やデバッグ作業に役立つ。

ビットとバイト長計算機

入力タイプ
ビット
8
バイト
1

8 ビット = 1 バイト

可視化

バイト 1
11111111
0xFF
ローディング計算機...
📚

ドキュメンテーション

ビット長・バイト長計算ツールとは何ですか?

ビット長・バイト長計算ツールは、データに必要なビット数とバイト数を求めます。ビットは単一の二進数字で、0または1です。バイトは8ビットのまとまりです。計算ツールは整数、十六進数文字列、またはテキスト文字列を受け取り、両方の単位で正確なサイズを示します。

これはプログラミング、ネットワーク通信、データ保存に関係します。データベースの列、ネットワークパケット、ディスク上のファイルはいずれもバイト単位のサイズを持ち、そのサイズはデータの書き方によって変わります。

整数のビット長を計算する方法

正の整数のビット長は、二進数表現の桁数です。たとえば、二進数の255は11111111で、桁数は8です。したがって、ビット長は8です。

公式: 正の整数nのビット長は、nを底2で表したときの桁数です。特殊な場合として、n = 0のビット長は1です。

負の整数は二の補数で表されます。これはコンピューターが符号付き数を保存する標準的な方法です。負の整数のビット長は、二の補数表現で収まる最小のビット数です。たとえば、−128は8ビット(10000000)に収まりますが、−129は9ビット必要です。これは、符号付き8ビット整数の範囲が−128から127だからです。

ビット長が分かれば、バイト長は次のように、最も近い整数バイト数へ切り上げて求められます。

バイト長 = ⌈ビット長 ÷ 8⌉

記号⌈ ⌉は「切り上げ」を意味します。9ビットの値でも、2個の完全なバイトが必要です。バイトを分割することはできないためです。

計算例

整数ビット長バイト長
011
25581
25692
−12881
−12992
18,446,744,073,709,551,615 (2⁶⁴ − 1)648

十六進数文字列のビット長を計算する方法

各十六進数字(0–9、A–F)は正確に4ビットを表します。4ビットで16通りの値を表せるためです。

公式: ビット長 = 十六進数字の個数 × 4。バイト長は、ビット長を8で割り、再び切り上げて求めます。

たとえば、十六進数文字列「FF」は2桁なので、ビット長は2 × 4 = 8ビット、つまり1バイトです。十六進数文字列「ABCD」は4桁で、16ビット、つまり2バイトになります。文字列内の空白は、数える前に無視されます。

テキスト文字列のバイト長を計算する方法

テキストの場合、サイズは文字エンコーディング、つまり文字をバイトに変換する規則によって決まります。計算ツールは次の五種類のエンコーディングに対応しています。

  • UTF-8:ウェブ全体で使われる可変長エンコーディングです。一文字あたり1から4バイトを使います。英字、数字、句読点は一文字あたり1バイトです。
  • UTF-16:JavaScriptとWindowsが内部で使います。一文字は一つまたは二つの16ビット単位です。ほとんどの文字は2バイトですが、絵文字の多くなど基本多言語面の外にある文字は4バイトになります。
  • UTF-32:固定長エンコーディングです。文字の種類にかかわらず、すべての文字が正確に4バイトを使用します。
  • ASCII:7ビットのエンコーディングで、一文字を8ビットのバイトに一つずつ格納します。128文字を扱い、主に英字、数字、基本的な句読点です。一文字は1バイトです。この範囲外の文字は受け付けられません。
  • Latin-1(ISO-8859-1):256文字を扱う8ビットのエンコーディングで、西ヨーロッパ言語で使われるアクセント付き文字を追加したものです。各文字は1バイトを使用します。この集合の範囲外の文字は拒否されます。

公式: バイト長 = エンコーディングが文字列に対して生成するバイト数。ビット長 = バイト長 × 8。

計算例

テキスト「Hello, world!」は13文字で、すべて通常のASCII英字と句読点です。

  • UTF-8:13バイト(104ビット)。すべての文字が1バイトに収まるためです。
  • UTF-16:26バイト(208ビット)。すべての文字が2バイトを使用するためです。

「こんにちは世界」(日本語の七文字)は、一文字あたり3バイト(UTF-8)なので、合計で21バイト(168ビット)になります。

😀などの絵文字は基本多言語面の範囲外です。UTF-8では4バイト、UTF-16では4バイト(サロゲートペアとして)、UTF-32では4バイトを使用します。

符号付き整数で答えが変わる理由

コンピューターは負の数を、単純なマイナス記号ではなく二の補数で格納します。そのため、負の整数のビット長は、その絶対値のビット長に一を加えたものとは限りません。規則では、ビット長は、値が−2^(k−1)以上となる最小のビット数kです。したがって、−128(−2⁷に等しい)は8ビットに収まりますが、−129には9ビットが必要です。

よくある質問

バイトをビットに変換するにはどうすればよいですか? 8を掛けます。一バイトは定義上8ビットを格納するため、十バイトは80ビットです。

ビット長とバイト長の違いは何ですか? ビット長は個々の二進数字を数えます。バイト長は8ビットのまとまりを数え、ビット長が8の倍数でない場合は次の整数バイト数へ切り上げます。

UTF-8の文字は何バイトを使用しますか? 1~4バイトです。ASCIIと共通する文字は1バイトを使用します。アクセント付きラテン文字、ギリシャ文字、キリル文字の多くは2バイトを使用します。中国語、日本語、韓国語の文字の多くは3バイトを使用します。絵文字などの一部の珍しい記号は4バイトを使用します。

十六進数文字列のバイト長はどのように計算しますか? 空白を除いた十六進数の桁数を数え、4を掛けてビット数を求め、8で割って切り上げます。「FF」は1バイト、「ABCD」は2バイトです。「ABC」(12ビット)のように桁数が奇数でも、2バイト必要です。

負の整数が正の整数に対応する値より多くのビットを必要とすることがあるのはなぜですか? 二の補数では符号を示すために一ビットを使いますが、そのビットはすべての場合に値へ追加されるのではなく、値の範囲と共有されます。−128は、正の値で127までを表せるのと同じ8ビットに収まりますが、−129はもはや8ビットに収まらず、9ビットが必要です。

この計算ツールで受け付けられる入力サイズはどのくらいですか? 1,000,000文字以内の整数、十六進数文字列、テキスト文字列です。

参考文献

  1. Unicode, Inc. FAQ: UTF-8, UTF-16, UTF-32 & BOM。Unicodeエンコーディング FAQ — 各文字は、8ビットバイトで一〜四個(UTF-8)、16ビットコード単位で一つまたは二つ(UTF-16)、または単一の32ビットコード単位(UTF-32)で表されます。
  2. Internet Engineering Task Force. RFC 3629: UTF-8, a transformation format of ISO 10646。RFC 3629 — UTF-8は1から4オクテットを使います。U+0000–U+007F は1バイト、U+0080–U+07FF は2バイト、U+0800–U+FFFF は3バイト、U+10000以上は4バイトです。
  3. Internet Engineering Task Force. RFC 20: ASCII format for network interchange。RFC 20 — 8ビットバイトに埋め込まれた標準の7ビットASCIIです。
  4. Oracle. The Java Language Specification, Java SE 21, Chapter 4: Types, Values, and Variables。JLS 第4章 — byteは8ビットの符号付き二の補数整数で、範囲は−128から127です。