当前位置: 首页 > 面试题库 >

什么是按位运算?

羊舌和安
2023-03-14
问题内容

我正在研究《 Beginning Android Games》 这本书。我注意到的一件事是:

int action = event.getAction() & MotionEvent.ACTION_MASK;
int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK)
>> MotionEvent.ACTION_POINTER_ID_SHIFT;

这是我第一次看到这样的变量,所以我不知道它的作用。我在Java中运行代码并创建了一些示例。

如果我运行此代码:

   int i = 10 >> 500;
System.out.print("Answer " + i);

答案将是0?这是为什么?

如果我运行此代码:

int i = 10 & 500;
System.out.print("Answer  " + i);

起初,我认为这是价值的串联,因此我假设i = 10500,但事实并非如此。答案是一样的。还是0?有人知道这里发生了什么吗?


问题答案:

&是按位运算符,而&&是条件运算符。您正在使用按位运算符。

AND运算符指定必须对信号A和B都进行充电才能对结果进行充电。因此,对字节10和6进行“与”运算将得出2,如下所示:

a = 0000 1010 (10)

b = 0000 0110 (6)
  ---- ----
r = 0000 0010 (2)  // a&b

有关更多示例,请参见此处:

按位和移位运算符

~       Unary bitwise complement
<<      Signed left shift
>>      Signed right shift
>>>     Unsigned right shift
&       Bitwise AND
^       Bitwise exclusive OR
|       Bitwise inclusive OR


 类似资料:
  • 问题内容: 我是一个仅出于乐趣而编写代码的人,并且在学术或专业环境中都没有真正地去研究它,所以像这些按位运算符之类的东西真的让我感到困惑。 我正在阅读一篇有关JavaScript的文章,该文章显然支持按位操作。我一直看到该操作在某些地方提到过,并且我尝试阅读以弄清楚它到底是什么,但是我似乎一点也不了解。那是什么 清楚的例子会很棒!:D 再问几个问题-按位运算的一些实际应用是什么?您什么时候可以使用

  • 问题内容: 这些不同的运算符做什么? 问题答案: <<, >> 分别向左和向右移位]。如果想象左操作数作为位的二进制序列,你正在移那些向左或向右的比特数指示由右操作数。 它们分别是按位 和 , xor和或。你能想到的,并为同行和,但他们会将自己的操作数为位向量,并在每个位执行逻辑运算。没有运算符,但是此运算是“xor”或“exclusiveor”。您可以将“ a xorb”视为“ a或b,但不能同

  • 问题内容: 鉴于: 为什么此示例代码不输出任何内容? 问题答案: 在第一,如果你 排在第二,如果你得到 becouse -是opeartor,它的手段

  • 一、什么是进位制? 进制也就是进位计数制,是人为定义的带进位的计数方法,也有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正字计数法,以及外国人常用的tally mark计数(四条竖杠和一条斜线) 基数:某数字可以使用的数码个数,通俗说就是这个数字有多少位。 数码:一组用来表示某种数制的符号,这个数字可以由什么数字组成。 二、常见的进位制 (1)二进制 二进制是计算机内部运算中采用的进制

  • 问题内容: 为什么按位操作打印-1?在二进制中,不为0应该为1。为什么呢? 问题答案: 你实际上很亲密。 在二进制中,不为0应该为1 是的,当我们谈论一点时,这是绝对正确的。 但是,其值为0实际上是全零的32位!将所有32个零转换为32个零。 这是的补码表示形式。 类似地: 也就是说,对于32位无符号二进制补码表示,。 进一步阅读: 补码 这是Java(以及其他系统)用来表示带符号的数字位的系统

  • 问题内容: 我有传入的数据,这些数据存储在一个变量中: 变量采用JSON格式。然后我执行这个: 在大多数情况下,这是可行的。我时不时地收到以下错误消息: 然后,该错误消息指向该行 什么是八位位组? 为什么JSON文本必须至少包含两个八位字节? 如何防止我的代码每次没有两个八位位组时都被破坏? 谢谢! 问题答案: 一个八位位组是一组8位。今天,八位位组与字节同义,但是字节在历史上是指任何“本机”位组