Java中的<< >>运算符操作细节

		int i = 16;
		System.out.println(i>>2);

结果是4。

		int i = 16;
		System.out.println(i>>32);

结果是16。

通常我们都把m>>n理解为当前值m除以2的n次方,同理<<是乘,但我们注意到当某一个数>>32时,结果是它本身,原因就在于位移操作符右边的参数要先进行模32的运算。

例如上述的i>>2,实际上 temp = 2%32 = 2;    i / temp^2; 那么 i>>32就是,temp = 32%32 = 0,   i / temp^0 .

		int i = 16;
		System.out.println(i>>33);

结果是8。

		int i = 16;
		System.out.println(i<<33);

结果是32。

时间: 2024-10-03 03:24:34

Java中的<< >>运算符操作细节的相关文章

java中的集合操作类(未完待续)

申明: 实习生的肤浅理解,如发现有错误之处,还望大牛们多多指点 废话 其实我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList<XXXXX>(); 但是我仅仅只是了解,list这个类是一个可变长用来存储的对象实例的类,我甚至觉得这个List对象可以理解成数组,但是却又与java中咱们正常理解的数组很多的不同,比如说,他的长度可以随着需要自动增长,比如说,实例化一个List类就和咱们声明数组的时候是不一样的! 今天的实习生活

java中的++运算符

java中的++运算符 public class PlusPlusTest { /** * @param args */ public static void main(String[] args) { int a = 0; for (int i = 0; i < 10; i++) { a = a++; } System.out.println(a); } } 输出结果是0 解释:在这里jvm里面有两个存储区,一个是暂存区(是一个堆栈,以下称为堆栈),另一个是变量区. 语句istore_1是将堆

java中异常注意的细节1

/* public class Test{ public static void main(String[] args){ int i=0; try{ func();//区别就是该函数抛出的异常被封装了,外界不知道到底会不会发生该异常 System.out.println("i = " + i++);//所以这句话是有机会执行的 }catch(Exception e){ System.out.println("i = " + i++); } } static voi

java中异常注意的细节2

class A extends Exception{ A(){ super(); } A(String msg){ super(msg); } } class B extends A{ B(){ super(); } B(String msg){ super(msg); } } public class Test{ public static void main(String[] args){ try{ throw new B(); }catch(A e){ System.out.println

java中的运算符与类型转换

类型转换: 从小到大的排序 自动类型转化(隐式转换) 小的数据类型与大的数据类型进行运算的时候,结果会自动转化大的类型 byte char short -->int -->long -->float -->double 注意事项:byte char short 相互之间不转换 他们参与运算首先转换为int类型 格式:范围大的数据类型 变量 = 范围小的数据类型值 强制类型转换(显示转换) 可以忍受精度缺失的情况下 可以把大类型的数据强制转化成小类型的数据格式:范围小的数据类型 变量

【Java中各运算符的用法】

Java的运算符可分为4类:算术运算符.关系运算符.逻辑运算符和位运算符. 1.算术运算符 Java的算术运算符分为一元运算符和二元运算符.一元运算符只有一个操作数:二元运算符有两个操作数,运算符位于两个操作数之间.算术运算符的操作数必须是数值类型. (1)一元运算符: 一元运算符有:正(+).负(-).加1(++)和减1(--)4个. 加1.减1运算符只允许用于数值类型的变量,不允许用于表达式中.加1.减1运算符既可放在变量之前(如++i),也可放在变量之后(如i++),两者的差别是:如果放在

Java中的日期操作

Date : getTime() .setTime() SimpleDateFormate :   Formate(Date). parse(String s) Calendar : getInstance().set() .get().getActualMaximum().add().  gettime().setTime(Date). 字符串.Date.Calendar之间的转换 ---------------------------------------淫荡分隔-------------

java学习系列(一)Java中的IO操作

Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入\输出操作,在Java中把不同的输入\输出源抽象为"流",通过流的方式允许Java程序使用相同的方式来访问不同的输入/输出源.stream是从起源(source)到接收(sink)的有序数据. Java把所有传统的流类型(类或抽象类)都放在java.io包中,用以实现输入\输出功能. JavaAPI 1.6中java.io包 1.子节流  * 输入字节流 * -------------|InputStream 所有输入字

java入门学习笔记之2(Java中的字符串操作)

因为对Python很熟悉,看着Java的各种字符串操作就不自觉的代入Python的实现方法上,于是就将Java实现方式与Python实现方式都写下来了. 先说一下总结,Java的字符串类String本身定义了一些简单的字符串操作, 字符串常用操作有: 1. 取某一字符第一次出现/最后一次出现的索引 2. 取字符串某一位置的字符 3. 字符串截取 4. 去除首尾空格 5. 字符串字符替换 6. 判断两个字符串是否相等 7. 大小写转换 下面开始: 1.取某一字符第一次出现/最后一次出现的索引 JA