wioasd 2014-09-14 01:18 采纳率: 0%
浏览 1866

java 中进制与移位运算符

package Chapter_02;
import java.util.Random;
public class Control_12 {
public static void main(String[] args) {
System.out.println("对Int型数据进行移位的例子如下:\n");
Random rand = new Random(); // 实例化一个Random对象
int a = rand.nextInt(); // 生成一个int型的随机数变量a
int b = rand.nextInt(); // 生成一个int型的随机数变量b
// 以下方法均调用IntleftMove方法
IntleftMove("-1", -1);
IntleftMove("+1", +1);
int constant = 256987454; // 定义一个整型变量
IntleftMove("Constant", constant);
int negative = -256987454; // 定义一个整型变量
IntleftMove("Negative", negative);
IntleftMove("a", a);
IntleftMove("~a", ~a);
IntleftMove("-a", -a);
IntleftMove("b", b);
IntleftMove("a & b", b & b);
IntleftMove("a b", a);
IntleftMove("a ^ b", a ^ b);
IntleftMove("a << 3", a << 3);
IntleftMove("i >> 3", a >> 3);
IntleftMove("(~a) >> 3", (~a) >> 3);
IntleftMove("a >>> 3", a >>> 3);
IntleftMove("(~a) >>> 3", (~a) >>> 3);
System.out.println("\n对long型数据进行移位的例子如下:\n");
long c = rand.nextLong(); // 生成一个long型的随机数变量c
long d = rand.nextLong(); // 生成一个long型的随机数变量d
LongleftMove("-1L", -1L);
LongleftMove("+1L", +1L);
long Lconstant = 8454564564684456954L; // 定义一个长整型变量
LongleftMove("Lconstant", Lconstant);
long Lnegative = -8454564564684456954L; // 定义一个长整型变量
LongleftMove("Lnegative", Lnegative);
// 以下方法均调用LongleftMove方法
LongleftMove("c", c);
LongleftMove("~c", ~c);
LongleftMove("-c", -c);
LongleftMove("d", d);
LongleftMove("c & d", c & d);
LongleftMove("c d", c | d);
LongleftMove("c ^ d", c ^ d);
LongleftMove("c << 3", c << 3);
LongleftMove("c >> 3", c >> 3);
LongleftMove("(~c) >> 3", (~c) >> 3);
LongleftMove("c >>> 3", c >>> 3);
LongleftMove("(~c)>>> 3", (-c) >>> 3);
}
static void IntleftMove(String s, int i) { // 定义一个静态方法,带两个参数
System.out.println("int var="+s + "=" + i + ", 其二进制代码如下: ");
**

  **for (int j = 31; j >= 0; j--)       

if (((1 << j) & i) != 0) { // 判断变量b左移一位与a变量做"与"操作,看是否不等于0
System.out.print("1"); //如果不等于0,则输出1 } else {
System.out.print("0"); //否则输出0 } System.out.println(""); }**

**
static void LongleftMove(String s, long l) { // 定义一个静态方法,方法中带两个参数
System.out.println("long var= "+s+"=" + l + ", 其二进制代码如下: ");
for (int i = 63; i >= 0; i--) {
if (((1L << i) & l) != 0) {
System.out.print("1");
} else {
System.out.print("0");
}
}
System.out.println("");
}
} emphasized text

提问:for循环是什么意思 if (((1 << j) & i) != 0) 这是什么意思???????????????????????????

  • 写回答

2条回答 默认 最新

  • 小白yige 2014-09-15 01:52
    关注

    1向左无符号左移动j位,然后和i进行按位并操作。

    评论

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services