Module: ビット演算 (C++)


Problem

6/13

数値の符号を決定する

Theory Click to read/hide

ビット演算

コンピュータのメモリ内のすべての数値はバイナリ形式で保存されます。数値を 0 と 1 のシーケンスとして保存します。コンピュータ メモリに数値を保存するには、有限数のビットが使用されます。この数値のため、コンピュータの範囲は限られており、計算結果が不正確になる可能性があります。整数は 8、16、32、または 64 ビットのメモリに保存できます。追加ビットごとに、可能な値の範囲が 2 ずつ拡張されます。
正の数値と負の数値の演算は、プロセッサ内で同じアルゴリズムを使用して実行されます。

ビットごとの論理演算を利用して、プロセッサと外部デバイスのレジスタの個々のビットを制御できます。
  <頭> <本体> ab



演算 AND
演算「ANDを使用すると、マスクが 0 のビットをリセット(ゼロに設定)できます。
 
マスク –複数ビット数値のビットに対する論理演算の範囲を定義する定数。

D - データ、M - マスク

 

操作 OR
演算「ORを使用すると、マスクが 1 であるビットに 1 を書き込むことができます。

 

演算 排他的論理和
演算「XOR を使用すると、マスクが 1 であるビットを反転できます。


 

左にシフト
論理 (ビット単位)1 ビット左シフトビットは、正の整数を 2 倍にします。

 

右にシフト
ブール値 (ビット単位) 。右に 1 シフト 正の整数を 2 で割ります。


右シフトにより空いた位置に符号ビットが設定されるため、変数全体の長さを右シフトすることで x の符号を決定できます。

Problem

数値 x を与えます。数値の符号を決定します。

不足しているコードをプログラムに追加します。
 
C++ 操作 目的地
a & b a および b のビット単位の And
<コード>a | b ab のビット単位の OR
a ^ b OR
~a a のビット反転
a << b a から b へのビット単位の左シフト
<コード>a >> b a から b へのビット単位の右シフト
<頭> <本体>
# 入力 出力
1 10 1
2 -10 -1
3 0 0
Write the program below
#include <iostream>
using namespace std;

int getSign(int x) {
	int mask;  
if (x != 0)
		mask = 1;
	else
		mask = 0;           
}

int main()
{
	int x;
	cin >> x;
	cout << getSign(x);
	return 0;
}
             

     

Program check result

To check the solution of the problem, you need to register or log in!