掲示板に戻る
No:701 タイトル:GEAR戦士撫子 新Part695 お名前:プロフェッサー圧縮 投稿日:2026/03/25 07:06:32 単表示 返信

さて。

おさらいついでにもう一つ、コンピュータの計算に不可欠な話もしておきましょう。

コンピュータの演算は全てビット毎の三大論理演算AND OR NOTの組み合わせで実現できます。

裏を返せば、この3演算のいずれかだけの計算がコンピュータにとって最も高速ということになります。

実際にはシフト/ローテーション(ビット列を左右にずらす)も専用回路があることが多いので、大抵は同じ速度で演算できます。


          ◇          ◇          ◇


それを踏まえて。

UTF-8のバイトがどの種類であるかは、左シフトして何回目に0が出てくるかで即座にわかります。

そして、x部分(=文字コード本体)は、それぞれb00111111 b00011111 b00001111 b00000111でANDを取ればすぐ取り出せるようになっているのです。


          ◇          ◇          ◇


このように。

UTF-8は一見コンピュータの特性にマッチした優れた方式に見えます。

しかしながら。

この方式は、ある一部のデータに対して重大な欠陥があったのです。


          ◇          ◇          ◇


問題の核心は、実文字コードを取り出すAND工程にあります。

特に2バイトコードであることを示すb110xxxxxに問題が潜んでいるのです─────────