記事一覧

マスクビット再考




目次



マスクビットとは

ハロー、みなさん。エジソンです。

先日、勉強会を開催しまして、UNIX の umask についての説明を求められる場面がありました。その説明の中で、umaskが何であるかを説明することはできたのですが、マスクビットとはそもそも何ぞや、という部分を適切に説明することができませんでした。

知っているようで知らないマスクビットについて、自身の宿題と課しましたので、その答えを本エントリにてお披露目しようと思います。


ビット

コンピュータの世界は、デジタルな世界です。

コンピュータは、0 と 1 の世界と言われることがあります。

人間が生きている世界というのは、曖昧な情報で溢れかえっています。しかし、この曖昧な情報というのは、コンピュータを制御するのに不都合が生じることがあります。そのため、電流が流れているか流れていないかというシンプルな考え方で、0 と 1 という二つの状態を表現しようというのがデジタルな考え方です。

この 0 と 1 という二つの状態の組み合わせを、さらにもう一つ組み合わせて…、繰り返し組み合わせることで、コンピュータが今どのような状態にあるのかを表現することができるのですね。

1桁の数値を表すのに、10種類の数字(0〜9)を使うのは10進数、2種類の数字(0〜1)を使うのは2進数と言います。コンピュータの世界では、電流のオンオフの二つの状態を表現することを基本形としているため、2進数が用いられます。

この2進数は、2種類の数字しか用いられないので、以下のように数値を表現できます。

例)256(10進数)=10000000(2進数)

2進数の一桁をビットと呼びます。
Wikipedia - ビット

ビット (bit, b) は、ほとんどのデジタルコンピュータが扱うデータの最小単位。英語の binary digit (2進数字)の略であり、2進数の1けたのこと。量子情報科学においては古典ビットと呼ばれる。

1ビットを用いて2通りの状態を表現できる(二元符号)。これらの2状態は一般に"0"、"1"と表記される。

情報理論における選択情報およびエントロピーの単位も「ビット」と呼んでいるが、これらの単位は「シャノン」とも呼ばれる(詳細は情報量を参照)。

省略記法として、バイトの略記である大文字の B と区別するために、小文字の b と表記する。 …


マスクビット

マスクの説明を引用してみました。
Wikipedia - マスク

情報工学におけるマスク(英: mask)とは、ビット演算と呼ぶビット単位の操作を行う処理である。ビットマスク (bit mask) とも。

マスクを使用すると、バイト、ニブル、ワードなどの複数のビットを同時にオンやオフにしたり、ビット単位にオン/オフを反転させたり、また特定のビットの状態を知ることができる。注目するビットを操作し、それ以外のビットを操作対象外として覆うことから、顔の口に当てる「マスク」などのようにマスクと呼ぶ。


この説明の太字の部分に注目することで、取っ掛かりを得られるのではないかと思います。

注目するビットを操作し、それ以外のビットを操作対象外として覆うことから、顔の口に当てる「マスク」などのようにマスクと呼ぶ。


AND演算

深く説明するのが難しいキーワードである、AND演算について説明します。できるかなー。

ANDの概念を説明すると、事柄Aと事柄Bが同時に成り立つ場合に結果が成立となる、ということです。事柄Aと事柄Bが成り立たなかったり、何れかのみ成り立っている場合には、結果は不成立となります。

表にすると以下のようになります。全部で4パターンあります。

0 = 不成立、1 = 成立 と読み替えてください。

入力A 入力B 結果
0 0 0
1 0 0
0 1 0
1 1 1

2進数の4桁のAND演算を考えてみると、以下のようになります。

A : 0101
B : 0011
----------------
C : 0001

Aが入力Aで、Bが入力Bで、Cが結果です。

演算の際は、それぞれの桁毎に1つずつ演算を行います。左から4つ目は、0 and 0 = 0 で、3つ目は、1 and 0 = 0 で、2つ目は、 0 and 1 = 0 で、1つ目は、 1 and 1 = 1 です。

マスク演算について

ここまでの説明をまとめました。
  • ビットは2進数の1桁で、2進数は、0と1で表現される。
  • 注目するビットを操作し、それ以外のビットを操作対象外として覆うことから、顔の口に当てる「マスク」などのようにマスクと呼ぶ。
  • ビットマスクするには、AND演算を使用。
    (正確には、0にマスクするにはAND演算で、1にマスクするにはOR演算を使用する)


umaskとは

umaskとは何だろうという話で、参考になったページを紹介します。

ITPro - 【 umask 】 ファイル作成時のパーミッションを指定する

ファイルを作成するときに,通常利用するパーミッションを設定できる。

パーミッションの指定はchmodコマンド同様に8進数を利用する。設定にはパーミッションとして利用したくないビットを「1」として指定する。例えば,その他のユーザーのアクセスをすべて禁止したい場合,禁止するビットは「000000111」となる。よってumaskには「007」を指定すればよい。

umaskはパーミッションとして利用したくないビットを「1」として指定する、という箇所がポイントです。

関連記事

このエントリーをはてなブックマークに追加

コメント

コメントの投稿

非公開コメント

プロフィール

EZOLABブログへようこそ。
EZOLABは、札幌のソフトウェア会社です。

http://ezolab.co.jp