Module: 位运算 (C++)


Problem

6/13

确定数字的符号

Theory Click to read/hide

位操作

计算机内存中的所有数字都以二进制形式存储,即作为 0 和 1 的序列。为了在计算机内存中存储数字,使用了有限数量的位。由于这个数字,计算机的范围有限,计算结果可能不准确。 一个整数可以存储在8位、16位、32位或64位的内存中。每增加一位,可能值的范围就会扩大 2。 
使用相同的算法在处理器中执行正数和负数的运算。

借助按位逻辑运算,您可以控制处理器和外部设备寄存器的各个位。 
  <头> <正文>



操作AND
使用操作“AND,您可以重置(设置为零)掩码为 0 的位! 
 
掩码–一个常量,它定义了对多位数字的位进行逻辑运算的范围。

D - 数据,M - 掩码

 

操作OR
操作“OR可用于将1写入掩码为1的位!

 

运算异或
使用操作“XOR,您可以反转掩码为 1 的位!


 

左移
逻辑(按位) 左移 1 位将正整数加倍。

 

右移
布尔值(按位)。右移 1 将一个正整数除以 2。


由于右移会在空位置设置符号位,因此可以通过右移变量的整个长度来确定 x 的符号。

Problem

让数字x给定。 确定数字的符号。

将缺少的代码添加到程序中。
 
例子
C++操作 目的地
一个 & b 按位 And 用于 ab
一个 | b ab 的按位OR
a ^ b OR 用于 ab
~a a 的位反转
<代码>一个<< b a 左移到 b
一个>> 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!