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

移位运算符如何在Java中工作?

咸利
2023-03-14
问题内容

我正在尝试了解轮班经营者,但收获不多。当我尝试执行以下代码时

System.out.println(Integer.toBinaryString(2 << 11));
System.out.println(Integer.toBinaryString(2 << 22));
System.out.println(Integer.toBinaryString(2 << 33));
System.out.println(Integer.toBinaryString(2 << 44));
System.out.println(Integer.toBinaryString(2 << 55));

我得到以下

1000000000000    
100000000000000000000000    
100    
10000000000000    
1000000000000000000000000    

有人可以解释一下吗?


问题答案:
System.out.println(Integer.toBinaryString(2 << 11)); 

将二进制2(10)向左移动11次。因此:1000000000000

System.out.println(Integer.toBinaryString(2 << 22)); 

将二进制2(10)向左移动22次。因此:100000000000000000000000

System.out.println(Integer.toBinaryString(2 << 33)); 

现在,int为4字节,因此为32位。因此,当你偏移33时,它等效于偏移1。因此:100



 类似资料:
  • 主要内容:位逻辑运算符,位移运算符,复合位赋值运算符Java 定义的位运算(bitwise operators)直接对整数类型的位进行操作,这些整数类型包括 long,int,short,char 和 byte。 位运算符主要用来对操作数二进制的位进行运算。按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值。 Java 语言中的位运算符分为位逻辑运算符和位移运算符两类,下面详细介绍每类包含的运算符。 位逻辑运算符 位逻辑运算

  • 问题内容: 当遇到按位移位运算符时,我遇到了一个有趣的场景。如果第二个操作数为负,按位移位运算如何工作?。 即,<< << b,“ <<”将a中的位模式向左移动b位。但是,如果b为负数,在运行时是否应该出错? 我能够成功运行以下代码,但我不知道它是如何工作的? 输入项 结果 “ a”的ASCII码为97。有人可以帮助我了解其工作原理吗? 问题答案: 但是,如果b为负数,在运行时是否应该出错? 不符

  • 更新运算符已在mongob版本3.6中添加。 我想将某个特定用户的数组的所有元素更新为到 我使用的查询是: 用户模式 上面给出的查询不起作用,有人能告诉我,如果我遗漏了什么,或者做错了什么吗?

  • JLS说 编辑:如果操作数已经使用转换运算符转换为不同的(较小的)类型,那么操作数是否经历数字提升(一元/二进制)?如果是这种情况,您将如何解释具有字节变量的表达式,因为在强制转换之后,字节结果可能会根据数字提升转换为int?

  • 为了在Swift中实现这一点,我将通过执行以下操作来获取除符号位以外的所有位, 注意数字必须是负数!如果shift操作符溢出,应用程序就会随着EXC_BAD_INSTRUCTION崩溃,这不是很好...另外,我是故意使用Int64的。因为没有更大的数据类型,所以执行类似(1<<63)的操作会溢出Int64并崩溃。因此,我没有在更大的数据类型中执行((1<<63)-1+negativeNumber)

  • 问题内容: 请查看以下代码: 这将显示11。 但!如果在功能参数中删除“&”运算符,则结果将为10。 这是怎么回事? 问题答案: 该运营商告诉PHP不要把它传递给函数时数组复制。取而代之的是,将对数组的 引用 传递给函数,因此函数修改了原始数组而不是副本。 只要看这个最小的例子: 在这里,输出为: –的呼叫未修改。另一方面,打到了。