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 优质github账号直接兑换rmb,感兴趣伙伴可以私信
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)