質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
基本情報技術者

基本情報技術者とは、経済産業省が行う国家資格「情報処理技術者試験」の区分の一つです。試験ではプログラマーやシステムエンジニアなどIT業界で働くために必要とされる基礎知識や情報処理において論理的な考え方ができるか等が問われ、企業から高い評価を獲ることができ、IT業界の入門的な資格として人気があります。

Q&A

解決済

4回答

5621閲覧

特定のビットを取り出す?

utopia

総合スコア1

基本情報技術者

基本情報技術者とは、経済産業省が行う国家資格「情報処理技術者試験」の区分の一つです。試験ではプログラマーやシステムエンジニアなどIT業界で働くために必要とされる基礎知識や情報処理において論理的な考え方ができるか等が問われ、企業から高い評価を獲ることができ、IT業界の入門的な資格として人気があります。

0グッド

0クリップ

投稿2020/08/17 03:47

今、基本情報技術者試験を独学で勉強していて少し疑問に思ったことがあるので
質問させてください。

特定のビットを取り出す場合、元のビット列に対して取り出したい位置に1を入れた
マスクパターンを用意し2つのビット列の論理積をとると特定のビット列を
取り出すことができるというのを勉強しました。

そこでふと疑問に思ったのですが、
特定のビットを取り出す操作にどういった利点だったり
PCの計算で使い道があるのでしょうか?

引き算をする場合は排他的論理和を使って全てのビット列を反転させたものを使えば
いいとも勉強したので特定のビットを取り出すことの利点が分からなくて
質問させてもらいました。

質問が分かりずらかったら申し訳ありませんが、
解答の程宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

例えばファイルのパーミッションで 764 とかありますが、これは

  • owner : 7(ビット表記で 111 )
  • group : 6( 110 )
  • other : 4( 010 )

です。
これは

  • read : 4 (ビット表記で 100 )
  • write : 2( 010 )
  • exec : 1( 001 )

の合計値です。

これにより、group に対して実行権限があるかどうかを評価する際に、

110 AND 001 のビット演算で 000 となることで実行権がないことがわかります。
同様に 110 AND 010 の演算で 010 となることで、書き込み権限があることがわかります。

このように各ビットに対してON/OFFの意味を持たせることでまとめてデータ管理するといったことがよく

投稿2020/08/17 04:14

kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ビット列の一部を取り出したり消したりシフトしたりというビット単位の処理は様々なところで使います。
とりあえず出ていないところでいくつか。

・圧縮ファイル
例えばJPEGやGIFなど多くの圧縮ファイルはビット単位でデータが並んでいるので扱うにはビット単位の処理が必要です。
・ビットマップ画像の一部
ビット深度の少ないビットマップ画像はビット単位でデータが並んでいます。
・文字コード
文字コードの変換処理(Shift_JIS↔JISとか、UTF-16↔UTF-8とか)はビット単位の処理が必要です。
単純なところでいえばASCIIコードの大文字小文字判定にも使えます。
・浮動小数点数
今は多くの環境でハードウェアで処理ができますが、昔やごく低性能な環境ではソフトウェアでの浮動小数点数の演算をし、ビット単位の処理が必要です。

投稿2020/08/18 01:04

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

普通に Windowsアプリとかでは使う機会は少ないですが、外部機器をアクセスする時とか、ネットワークパケットとかでは、データがbit単位で割りつれられる事は多くあります。その時に、ビット演算(特定のビット取得とか)が必要となります。

ライブラリで、bit毎のデータを true/falseで取得するなんてのもありますが、IOのやり取りとかは、バイト単位が多いので、必要に応じて、その 1bitまたは、数bitを取り出します。

昔だと、メモリ節約用途もありましたが、さすがに今は少ないですね。
例えば、IPパケットなども古いので、bit単位の割付けがあったりします。
IPパケットの構造とIPフラグメンテーション

投稿2020/08/17 12:34

pepperleaf

総合スコア6385

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

特定のビットを取り出す操作にどういった利点だったり

PCの計算で使い道があるのでしょうか?

「特定のビットが立っているか判定したい」というような場面もよくあります。

投稿2020/08/17 03:52

maisumakun

総合スコア145930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問