abs 関数の動作を確認してみましょう.-10 から 10 の範囲の乱数を 5 個発生させ,その値と絶対値を表示するプログラムを作成しましょう.
-7 -> 7 -10 -> 10 1 -> 1 -7 -> 7 7 -> 7 |
3桁の正の整数を乱数により1つ発生させ,それを hex 関数や oct 関数を用いて16進数や8進数での表示を行うプログラムを作成しましょう.
Decimal: 642 Hexdecimal: 0x282 Octal: 0o1202 |
Decimal: 871 Hexdecimal: 0x367 Octal: 0o1547 Binary: 1101100111 |
前問をまた少し変えて,0から255までの整数を1つ乱数により発生させ,8桁の2進数で 0 で埋める処理をして表示するプログラムを作成しましょう.
Decimal: 89 Binary: 01011001 |
以下のように2進数の各桁の数(0もしくは1)を準備して0から255までの整数を作るプログラムを作成しましょう.8桁の2進数の各桁が0か1かを乱数により作ります.反復処理を利用して作りますが,下の実行例にある最初の行がその発生させた0と1の並びで,2行目が10進数に直したもの,3行目が2進数にしたものですが,反復処理で数を作るために逆順になっています.反復処理で作る定義式は以下の式で,変数 a から h が0か1です.
1 1 1 1 0 1 0 0 Decimal: 47 Binary: 00101111 |
Unix ファイルシステムは多くの Web サーバで使用されていますが,そこで閲覧可能かどうかを決める属性(パーミッション)は以下のようなビットで構成されています.
ディレクトリかどうか | 所有者の権限 | グループの権限 | 一般ユーザの権限 | |||||||
---|---|---|---|---|---|---|---|---|---|---|
記号 | d | w | r | x | w | r | x | w | r | x |
例(ファイル) | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
例(ディレクトリ) | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
w: writable, 1は書き込み可能 r: readable, 1は読み取り可能 x: executable, 1は実行可能 |
ディレクトリの部分を除いた9つのフラグを3つのグループ内でそれぞれ考えることとし,それらを2進数とすると,ファイルの例は8進数に変換すると644となり,ディレクトリの例は755です.
そこで Unix 系のターミナルではパーミッションを変更するコマンド chmod を使用して,外部に公開するHTMLファイルであれば,
$ chmod 644 hoge.html
のように属性を変更し,また,ディレクトリ内にあるファイルを外部に公開するときには,
$ chmod 755 hege
などとします.
では,公開準備中であったパーミッション 640 のファイルのパーミッションを 644 に変更するコマンドが実行されたとすると,そのように動作するプログラムの作成にビット演算を使って挑戦してみましょう.
Before chmod: 640 -- 110100000 After chmod: 644 -- 110100100 |
論理和を使用してビットをセットできます.
当初想定していた2進数の方の3桁ごとにスペースを入れるプログラムはこちらから参照できます.処理が複雑になるので,授業中に変更しました.
8つのビットそれぞれをランダムに1か0にした乱数(0から255までの10進数)を発生させます.2進数表現で1が何個あるかを数えるプログラムを if 文などの条件分岐を使用しないで作成しましょう.
101 -- 01100101 Number of 1: 4 |
論理積とシフト演算子を使います.