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に問題が潜んでいるのです─────────