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进行按位并操作。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?