Module: 이진 시프트(C++)


Problem

1/4

숫자의 부호 결정

Theory Click to read/hide

비트 연산

컴퓨터 메모리의 모든 숫자는 이진 형식으로 저장됩니다. 0과 1의 시퀀스로. 컴퓨터 메모리에 숫자를 저장하기 위해 한정된 수의 비트가 사용됩니다. 이 숫자로 인해 컴퓨터 범위가 제한되어 계산 결과가 정확하지 않을 수 있습니다. 정수는 메모리의 8, 16, 32 또는 64비트에 저장할 수 있습니다. 각 추가 비트는 가능한 값의 범위를 2씩 확장합니다. 
양수 및 음수 연산은 프로세서에서 동일한 알고리즘을 사용하여 수행됩니다.

비트 논리 연산의 도움으로 프로세서 및 외부 장치 레지스터의 개별 비트를 제어할 수 있습니다. 
  <헤드> <몸> 에 대한 비트별 And에 대한 비트별 ORab에 대한 로 비트 오른쪽 이동



연산 AND
연산 "AND"를 사용하면 마스크가 0인 비트를 재설정(0으로 설정)할 수 있습니다! 
 
마스크– 다중 비트 숫자의 비트에 대한 논리 연산의 범위를 정의하는 상수입니다.

D - 데이터, M - 마스크

 

연산 OR
연산 "OR"은 마스크가 1인 비트에 1을 쓰는 데 사용할 수 있습니다!

 

연산 독점적 OR
작업 "XOR"을 사용하면 마스크가 1인 비트를 반전시킬 수 있습니다!


 

왼쪽으로 이동
논리(비트 단위) 1씩 왼쪽 이동 비트는 양의 정수를 두 배로 만듭니다.

 

오른쪽으로 이동
부울(비트) .오른쪽으로 1씩 이동  양의 정수를 2로 나눕니다.


오른쪽 시프트는 빈 위치에 부호 비트를 설정하므로 x의 부호는 변수의 전체 길이를 오른쪽으로 시프트하여 결정할 수 있습니다.

Problem

숫자 x를 지정하십시오. 숫자의 부호를 결정하십시오.

누락된 코드 조각을 프로그램에 추가합니다.
 
C++ 작업 목적지
a & b ab
<코드>a | b ab
a ^ b OR
~a a에 대한 비트 반전
<< b a에서 b로 왼쪽 비트 이동
a >> b ab
<헤드> <일># <몸>
입력 출력
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!