2G(ギガ)の壁
皆さんは、2G(ギガ)の壁という業界用語を知っていますか?
2Gの壁とは、2Gバイトという境界線のことです。
先日、MONJUのライブをWebカメラでHD撮影して編集しようとしています。
フルHDとは 1080pと呼ばれて画素数が1920×1080画素数で1秒に30フレームを撮るという恐ろしくデータ量をくうモノ。大体1曲5分としても2GB以上のデータ量がある。
Macの動画ビューアー、クイックタイムの挙動が可怪しい。
2Gぐらいのとことで、データが終わってしまいます。これは2Gの壁と呼ばれるバグでしょうね。
先ずは、G(ギガ)の単位の説明です。デジタルデータの最小単位は、bitと呼ばれる0or1の単位です。
これを8小並べて1バイトという単位で扱います。
これがコンピュータ、スマートフォンが扱うデータの単位でBと略します。1バイトが1024個集まると、1キロバイトになります。1KBもしくは1Kと呼びます。
通常つかうキロメートルと同じです。
この1KBが1024個集まると、1メガバイトになります。1MBもしくは1Mと呼びます。
メガ盛りとかに使う言葉、1MBが1024個集まると1ギガバイトになります。1GBと略します。
iPhoneのメモリサイズ32Gとは1024☓1024x1024☓32=約343億バイト
というかなり大きなサイズを表します。
一方コンピューターの中のソフトウェアは、有限の単位のデータを扱っているがゆえに、予期しないことが起きます。
特に、
int size;
と宣言される整数の場合。
コンピューターは最上位のbitを−(マイナス)として扱います。
この図は整数が16bitのとき
今のコンピュータはint (整数)は普通なにげなく32bitになっています。
ここを64bitにしているのを64bit版とか呼んだりします。
すると何起きるかというと、7fffffff(16進数)=2147483647
の次は最上位のbitがたって0になります。
本来なら、2147483648が突然コンピュータでは0になりまます。
これをオーバーフローと呼びます。
2147483648=1024x1024x1024x2 すなわち2GB
これが2GBの壁
この2G付近でソフトの挙動がおかしくなったら、おそらくこれが原因。
むかしは、2GBなんて大きなデータは無かったからバレなかった。
コメント
コメントを投稿