バイト → KB 変換
バイト → KB 変換
このレッスンで分かること
- この一行に、
計算量精度単位の三つの設計判断がすべて詰まっています- コンピュータは内部で 0/1 を
bitの単位で扱い、8 bit をまとめたものが1 byteです1 byte = 8 bitは世界共通のお約束です
バイト → KB 変換 とは
1024 で割って KB に変換し、容量表示の基本を体得する。本レッスンでは、バイト → KB 変換 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
コンピュータは内部で 0/1 を bit の単位で扱い、8 bit をまとめたものが 1 byte です。日々の開発で KB MB GB といった単位を見ない日はありません。Slack の添付ファイル、Docker のイメージサイズ、CI のキャッシュ容量、SQL の BLOB カラムの上限、すべてが byte をベースに数えられています。今回はその一番下にある変換ルールを、function で表現してみます。
単位を
数字 + 約束ごととして理解できると、ファイル容量・通信量・メモリの計算が一気に楽になります。
bit と byte の関係
1 byte = 8 bit は世界共通のお約束です。bit は binary digit の略で、コンピュータが扱う最小情報単位、0 か 1 のいずれかを取ります。8 bit まとめれば 2^8 = 256 通りを表現でき、ASCII の英数字一文字をちょうど 1 byte で表せるのが偶然ではない設計です。容量や転送速度を語るときは、bit か byte のどちらで数えているかを最初に確認するクセをつけましょう。Mbps は mega bit per second、MB/s は mega byte per second で、数値が 8 倍 ずれます。
IEC と SI の二つの世界
KB と一口に言っても、世の中には二つの流儀があります。1 KB = 1024 byte と数える流儀 (KiB とも書く) と、1 KB = 1000 byte と数える流儀 (SI 単位) です。OS のファイル容量表示はだいたい 1024 ベース、ネットワーク回線速度や HDD の販促表記は 1000 ベース が中心です。Windows のエクスプローラ、macOS の Finder、Linux の ls -lh などはバージョンや設定で挙動が変わるため、両方の世界を知っていると説明できる人になれます。
本レッスンでは 1 KB = 1024 byte を採用します。これは OS の見方 であり、メモリ や ファイルシステム を扱うときの直感に最も近い値だからです。IEC の正式表記では KiB MiB GiB ですが、現場の口頭表現はまだまだ KB MB GB のまま 1024 倍 を意味することが多いのが実情です。
計算の本質は割り算
バイトから KB への変換は、byte / 1024 という単純な割り算です。整数で返してしまうと 1023 byte が 0 KB になり、差 が見えなくなります。ここでは 小数を含む値 を返すように設計し、UI 側で toFixed(2) のような丸めをかけるという発想で書きます。
関数の中で丸めを決め打ちすると、後から精度を変えたくなったときに困ります。変換と表示は分けるのが原則です。
Python
def byteToKb(bytes_):
return bytes_ / 1024JavaScript
function byteToKb(bytes) {
return bytes / 1024;
}この一行に、計算量 精度 単位 の三つの設計判断がすべて詰まっています。
0 と負の値の扱い
0 byte のときは 0 を返します。これは 0 / 1024 = 0 で自然に処理されます。マイナスの値が渡ってきた場合は、本問題では呼び出し側を信用して そのまま割る 仕様にします。実務では if (bytes < 0) throw のように バリデーション を入れるのが王道ですが、テストの単純化のためここでは省略します。
大きな値での丸め誤差
JavaScript の Number も Python の float も、内部は IEEE 754 の 64bit 浮動小数点です。2^53 - 1 (約 9000 兆、すなわち 9,007,199,254,740,991) を超えるバイト数を扱うと 丸め誤差 が顔を出します。GB や TB 単位での精度が必要なら BigInt や Decimal を検討しましょう。データ基盤の文脈では、PB (ペタバイト) を扱うことも珍しくなく、その世界では 精度 がそのまま 課金額のずれ に直結します。
関数を独立させる利点
byteToKb のような変換関数を独立させると、単体テスト が書きやすく、ロジックの変更点がはっきりします。KiB から KB (1000 ベース) に切り替えたい日が来ても、影響範囲はこの関数一箇所で済みます。関心の分離 という設計原則の最小単位の練習だと思って書いてみましょう。
単位変換ヘルパは、
ユーティリティ ライブラリの最初の住人になることが多い関数です。
よくある間違い
1024ではなく1000で割ってしまい、OS の表示と数値がずれる- 整数除算
//を使って1023 byte → 0 KBになる - 丸めを
関数内でやってしまい、後で精度を変えづらくなる
単位変換と表示整形は別レイヤー。分けて書くと再利用しやすい関数になります。
やってみよう
1 MB = 1024 KB = 1024 * 1024 byteの変換関数も書いてみる- 入力が小数
1234.5の場合の戻り値を確認する - マイナスの値が来たら例外を投げる版を追加で書いてみる
1000 ベース版byteToKbSIを書いて両者の差を眺める
よくある質問
Q. このトピックを覚える意味は何ですか?
A. アプリ層の上っ面だけ追わず、内部で何が起きているかを理解するための土台になります。例えばエンコーディングや進数変換は、文字化け・整数オーバーフロー・データサイズ計算で必ず出会う知識です。実務での問題解決スピードが格段に上がります。
Q. 実務でこの知識を使う場面は?
A. API の Content-Length 計算、ファイルアップロードのサイズ制限、画像処理での色深度計算など、低レベルな数値を扱う場面で頻出します。OS・ネットワーク・暗号の理解にも繋がるため、CS の共通言語と思って習得しておくと一生使える知識です。
Q. 他の章とどう繋がりますか?
A. 後続の章で扱うデータ構造(スタック・キュー)、アルゴリズム(探索・ソート)の基礎になります。「データを 32 bit でどう表現するか」「メモリにどう載せるか」が分かると、後続トピックの実装が腹落ちしやすくなります。
次のレッスン
次は ディスクサイズフォーマット に進みましょう。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- バイト→KB の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. バイト→KB とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
要件
- byteToKb という名前の関数を実装すること
- 1 KB = 1024 byte として計算すること
- 0 や 512 など小さい値でも正しい値を返すこと
入出力例
test-cases.txt
byteToKb(1024) → 1
byteToKb(2048) → 2
byteToKb(0) → 0
byteToKb(512) → 0.5
byteToKb(1048576) → 1024