java - Java:右移数字 1 不起作用
问题描述
我正在尝试将数字 1 向右移动。
所以最初,位掩码应该是:
1
那么,位掩码应该是:
01
下面是我的代码:
int bitmask = 1;
bitmask >>= 1;
System.out.println(Integer.toBinaryString(bitmask));
然而,输出只是:
0
解决方案
也许我们对位移的工作原理有误解。进行右移时,会丢失最低有效位 (1)。
二进制中的 1 已经是 0b01。这相当于 0b00000001。向右移动会产生 0b00。
试试这个,看看位移是否有效。
public class MyClass {
public static void main(String args[]) {
int bitmask = 0b10;
System.out.println(Integer.toBinaryString(bitmask));
bitmask >>= 1;
System.out.println(Integer.toBinaryString(bitmask));
}
}
输出
10
1
推荐阅读
- html - 如何 301 将一个静态 url 重定向到另一个静态 url?
- r - 为什么 gsub 从我的数据框中删除行?
- php - 认证成功后如何找回用户名?
- database - CouchDB - Mango Query 根据复杂的复合键选择记录
- angular - 从 Angular 7 更新到 Angular 9 会导致错误
- google-bigquery - 将气流与 BigQuery 和云 sdk 一起使用会出现错误“提供用户项目时必须对用户进行身份验证”
- apache-beam - 用于 SOAP 和/或 REST 的 Beam I/O 连接器 (python)
- memory - NetLogo:最后两个刻度的全局变量的值可以存储在列表中并在过程中调用吗?
- ios - 使用 CoreML 时的 DSPGraph
- reactjs - 使用动态对象创建上下文