我正在尝试了解轮班经营者,但收获不多。当我尝试执行以下代码时
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不要把它传递给函数时数组复制。取而代之的是,将对数组的 引用 传递给函数,因此函数修改了原始数组而不是副本。 只要看这个最小的例子: 在这里,输出为: –的呼叫未修改。另一方面,打到了。