WEBコラムのトップページ
原森流情報技術研究ネタをいろいろ紹介するコンテンツ
ここではcssのみ、jsのみ、html関連のみ、などとジャンルを絞らず、複合的にweb関連やIT関連の技術についてのネタ提供などを記事にしてみます。
2進数、ビット演算、シフト演算の活用
2進数・ビット演算・シフト演算の活用
2進数とビット演算、シフト演算の活用ネタの記事です。
「ビット演算 活用 具体例」「2進数 活用 具体例」「シフト演算 活用 具体例」などと検索してみても、ゲームのフラグ立てやC言語でビットマップ画像描写、通信やハードよりの論理回路などを紹介している内容が多くて、web制作者にとってはピンとこない場合が多いかと思います。
web制作のお仕事で、PHPやjavascriptでwebサイトを作る時に使えるかもしれない、プログラムのアルゴリズム的(言語にこだわらない)なアイデア紹介の記事です。
(対象はwebサイトの営業さん、デザイナーさん、フロントエンドエンジニアさん、新人のどちらかと言えば文系プログラマさん、を想定しています)
原森的には、プログラムを中学生あたりに教える場合には、こういう2進数の単なる計算を人間が意味づけして使っている、というような論理的な内容を教えてあげてほしいと思ったりします。「プログラム=誰かが作ったパーツを組み合わせて作る」(なのでパーツ自体は作れない、プログラム=辞書引いて例文を組み合わせる国語)ではなく「プログラム=アルゴリズム」(ホントはどんなプログラムも基本となるコンピュータ数学を知っていれば書き方が違うだけなので本やネットでちょっと調べれば大抵はその言語で最低限のものはすぐ作れるようになる)ということを教えてあげてほしいと思ったりします。
原森的には「プログラムとはインプットすれば計算結果をアウトプットしてくれるだけ、なので計算結果に人間が意味を与える点と、インプット・アウトプットの方法を知ると、大抵なんでも作ることができる」と思います。
広告スペース
2進数の活用ネタ『アンケートの複数選択状態を1個の数値で表現できる』
『2進数を理解すると片手で31まで数えることができるようになる』
『片手で31カウントの理由を理解すると、両手で1023カウントを説明できるようになる』(記事1の内容)
2進数の基本活用方法が理解できると「パーミッション設定」の意味もわかるようになります。
『複数の選択状態を示す10進数値から情報を取り出す時はビットマスクで[&](ビットごとのAND)を使ってビット演算する』(記事2の内容)
2進数の[111]は10進数の[7]。シフト演算って何に使えるの?回答『ビットマスク作成で使うと便利です』
『数値を2進数にした時に[1]が「重複してない」は、それらを足し算しても、個別に抽出して判定に使うことができるということ』(記事4の内容)
『複数の選択状態を示す10進数値から情報を取り出すビット演算』=『for文中のif文の条件判定をショートコードするためのビット演算テクニック』(記事4の内容)
『x&1 は単なるビット演算それに、人間がその計算結果を奇数偶数判定として使うという意味を与えることで、単なる計算がアイデアになる』(記事3の内容)
原森IT研の考察結果紹介。正しいジャンケンプログラムのアルゴリズムは『ifelse総当たり判定を配列指定にする』ではなく『 k | = 1<<a 』となりました。(記事5の内容)