java代码-java 中进制与移位运算符

问题描述

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) 这是什么意思???????????????????????????

解决方案

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

解决方案二:

从最高位往最低位 逐个比较 i 在该位 是否为 1

时间: 2024-11-29 15:31:35

java代码-java 中进制与移位运算符的相关文章

java中进制的转换,Byte与16进制的转换方法_java

java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十进制转成十六进制: String Integer.toHexString(int i) 十进制转成八进制 String Integer.toOctalString(int i) 十进制转成二进制  String Integer.toBinaryString(int i) 十六进制转成十进制 Inte

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

蓝桥杯 java基础试题关于进制转换的

问题描述 蓝桥杯 java基础试题关于进制转换的 这道题为什么我的代码评测出现错误输入输出啊?可以帮我找找有啥潜在的问题么?谢谢了. import java.util.Scanner; public class Main { public static void from16to10(String str){ int num = 0; int j=0; for(int i=str.length()-1;i>=0;i--){ if(str.charAt(i)<'A'){ num +=((str.

java中Integer包装类的详细讲解(java二进制操作,所有进制转换)

程序员都很懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往需要操作Integer,或者各种进制的转换等等.我今天就为大家详细讲解一下Integer的使用吧.看代码: package com.herman.test; public class IntegerTest { public static void main(String[] args) { System.out.println("Integer中的常量***************************

java socket 发送16进制数据-串口通信

问题描述 已有下位机通过ip转串口映射到ip+端口上去(物理通信没有问题了),现在下位机需要接受客户端发送过去的一串16进制的命令请求,然后返回结果,由于需要做成b/s的模式,所以现在想用java做客户端,请问该如何书写?因为java中在socket中只能传byte的数组:而byte的范围有限(-127~128)对于大的数就会溢出:请问如何解决? 解决方案 解决方案二:引用楼主u010212202的回复: 因为java中在socket中只能传byte的数组:而byte的范围有限(-127~128

诊断Java代码: Java编程中的断言和时态逻辑

虽然传统断言可以增加对 Java 代码执行的检查次数,但有许多检查不能用它们来执行.弥补这一缺陷的方法是使用"时态逻辑",它是一种用于描述程序状态如何随时间而更改的形式体系.在本文中,Eric Allen 将讨论断言,介绍时态逻辑并描述用于处理程序中时态逻辑断言的工具 (下一篇文章将检查以前的错误模式和时态逻辑的应用程序). 我们大家同意对 Java 代码检查得越多就越好,我们检查了断言在测试新的和改进的编程中的用法.虽然传统断言可以增加执行的检查次数,但有许多检查不能用它们来执行.

深入解读Java代码组织中的package包结构_java

如果我们在Class对象上调用getPackage方法,就可以得到描述该类所在包的Package对象(Package类是在java.lang中定义的).我们也可以用包名通过调用静态方法getPackage或者调用静态方法getPackages(该方法返回由系统中所有已知包构成的数组)来获得Package对象.getName方法可以返回包的全名. Package对象的使用与其他反射类型完全不同,即我们不能在运行时创建或操纵包.我们可以使用Package对象来获取有关包的信息,诸如包的用途.谁创建了

Java 如何讲2进制

问题描述 现在有点赶急进度,没时间学习一些算法.直接提要求了..写一个带参方法传一个String 类型的二进制如 String b = "0000 0000 0101 0101";返回其补码(不知道能不能叫补码,有点忘了.就是先取反,在加1).急.. 解决方案 希望对你有用public class Calculator {public static String getResult(String src){char[] c = src.toCharArray();for(int i=0

java代码-java程序编译时候出现了一些问题

问题描述 java程序编译时候出现了一些问题 import java.util.Scanner;import java.util.Vector;public class testlq{ public static void main(String[] args){ byte m; Engineer engineers[]=new Engineer[10]; Engineer en=null; Vector vector=new Vector(); Scanner input=new Scanne