- 浏览: 1592324 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
public class test19 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a=2*4; int b=2<<2; // 2*2^2 System.out.println(a+"//"+b); int c=3<<2; //0000 0000 0000 0000 0000 0000 0000 0011-->00 0000 0000 0000 0000 0000 0000 0011 //0000 0000 0000 0000 0000 0000 0000 1100-->1100-->12 System.out.println(c); int d=11>>2; //0000 0000 0000 0000 0000 0000 0000 1000-->0000 0000 0000 0000 0000 0000 0000 10 //0000 0000 0000 0000 0000 0000 0000 0010--2 System.out.println(d); int e=11>>>2; //8>>2==8/2*2 System.out.println(e); } }
java移位运算符不外乎就这三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 1、 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数。 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数。 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了33%32=1位。 2)运算规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃; 当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。 当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。 3)数学意义 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方 4)计算过程: 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位, 3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100, 转换为十进制是12。 移动的位数超过了该类型的最大位数, 如果移进高阶位(31或63位),那么该值将变为负值。下面的程序说明了这一点: Java代码 // Left shifting as a quick way to multiply by 2. public class MultByTwo { public static void main(String args[]) { int i; int num = 0xFFFFFFE; for(i=0; i<4; i++) { num = num << 1; System.out.println(num); } } } // Left shifting as a quick way to multiply by 2. public class MultByTwo { public static void main(String args[]) { int i; int num = 0xFFFFFFE; for(i=0; i<4; i++) { num = num << 1; System.out.println(num); } } } 该程序的输出如下所示: 536870908 1073741816 2147483632 -32 注:n位二进制,最高位为符号位,因此表示的数值范围-2^(n-1) ——2^(n-1) -1,所以模为2^(n-1)。 2、 右移运算符 右移运算符<<使指定值的所有位都右移规定的次数。 1)它的通用格式如下所示: value >> num num 指定要移位值value 移动的位数。 右移的规则只记住一点:符号位不变,左边补上符号位 2)运算规则: 按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1 当右移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。 例如,如果要移走的值为负数,每一次右移都在左边补1,如果要移走的值为正数,每一次右移都在左边补0,这叫做符号位扩展(保留符号位)(sign extension ),在进行右移 操作时用来保持负数的符号。 3)数学意义 右移一位相当于除2,右移n位相当于除以2的n次方。 4)计算过程 11 >>2(11为int型) 1)11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011 2)把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。 3)最终结果是0000 0000 0000 0000 0000 0000 0000 0010。 转换为十进制是3。 35 >> 2(35为int型) 35转换为二进制:0000 0000 0000 0000 0000 0000 0010 0011 把低位的最后两个数字移出:0000 0000 0000 0000 0000 0000 0000 1000 转换为十进制: 8 5)在右移时不保留符号的出来 右移后的值与0x0f进行按位与运算,这样可以舍弃任何的符号位扩展,以便得到的值可以作为定义数组的下标,从而得到对应数组元素代表的十六进制字符。 例如 Java代码 public class HexByte { public static public void main(String args[]) { char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'' }; byte b = (byte) 0xf1; System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]); } } public class HexByte { public static public void main(String args[]) { char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'' }; byte b = (byte) 0xf1; System.out.println("b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]); } } (b >> 4) & 0x0f的运算过程: b的二进制形式为:1111 0001 4位数字被移出:0000 1111 按位与运算:0000 1111 转为10进制形式为:15 b & 0x0f的运算过程: b的二进制形式为:1111 0001 0x0f的二进制形式为:0000 1111 按位与运算:0000 0001 转为10进制形式为:1 所以,该程序的输出如下: b = 0xf1 3、无符号右移 无符号右移运算符>>> 它的通用格式如下所示: value >>> num num 指定要移位值value 移动的位数。 无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位 无符号右移运算符>>> 只是对32位和64位的值有意义
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 1007public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2285经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5663package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 1007import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1057/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1014//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1828更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1420import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 820import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2401import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 927// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1176import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 806import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1150import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3897import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 970/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1027import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1843Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1011/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2234package out; import ja ...
相关推荐
位移运算符则有右移(>>>和>>)和左移(<<)。 1. **位逻辑运算符**: - **按位非(NOT)**:`~`运算符,对整数的每个位执行逻辑非操作,即将1变为0,将0变为1。例如,`~42`(二进制表示为00101010)会产生...
11. **位移运算符(<<, >>, >>>):** 左移位运算符将二进制位向左移动指定位数,右移位运算符则向右移动。无符号右移运算符对负数也会填零。这些都是双目的运算符,从左到右结合。 12. **关系运算符(<, >, <=, >=, ...
Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符(<<)、右移位运算符(>>>)和带符号的右移位运算符(>>)。这些运算符可以单独用来处理int型整数。 1....
位运算符,如 AND (&), OR (|), XOR (^), NOT (~) 以及位移运算符 (<<, >>, >>>),作用于整数类型的二进制表示。位运算符直接操作二进制位,例如 `a & b` 会返回 `a` 和 `b` 的二进制与运算结果。位移运算符会改变...
本文将深入探讨Java中的三种移位运算符:左移运算符(<<),右移运算符(>>)以及无符号右移运算符(>>>)。 1. 左移运算符(<<) 左移运算符(<<)将一个数的二进制表示向左移动指定的位数。例如,如果`num`是一个...
在Java语言中,按位运算符(&、|、^)的优先级高于关系运算符(<、>、<=、>=),因此在执行按位运算时,需要注意运算符的优先级。 了解Java运算符优先级是非常重要的,掌握这些知识可以帮助我们编写更加正确和高效的...
3. 位移运算符:深入理解<<、>>和>>>的用法及它们对二进制数据的影响。 4. 图形生成:如何通过编程实现分形山的可视化。 5. 注释规范:良好的编程习惯,通过注释解释关键代码的功能和作用。 通过分析并运行这个程序...
位移`<<`、`>>`和`>>>`;比较运算符`<`、`>`、`<=`、`>=`和`instanceof`;相等性运算符`==`和`!=`;按位与`&`;异或`^`;最后是逻辑运算符`&&`、`||`。 了解这些运算符及其用法对编写Java代码至关重要,因为它们...
11. **位移运算符**:左移(<<)和右移(>>)用于将二进制位向左或向右移动指定的位数。例如,`5 << 2`将返回20(二进制表示为101左移两位变为10100)。 12. **取反运算符**:`~`用于对整数进行按位取反,将0变为1...
位移`<< >> >>>` 9. 按位与`&` 10. 按位异或`^` 11. 按位或`|` 12. 逻辑与`&&` 13. 逻辑或`||` 14. 条件运算符`? :` 15. 赋值运算符`= += -= *= /= %= &= ^= |= <<= >>= >>>=` #### 六、示例 假设我们有一...
5. **位移运算符** `<<`, `>>`, `>>>`:从左到右结合。 - **左移** `<<`:将二进制数的各位向左移动。 - **右移** `>>`:将二进制数的各位向右移动。 - **无符号右移** `>>>`:与右移类似,但高位补0。 6. **...
- 移位运算符`<<`、`>>`和`>>>`用于位移操作,`<<`是左移,`>>`是带符号右移,`>>>`是无符号右移。 - 关系运算符`<`、`>`、`<=`、`>=`用于比较,`instanceof`用来检查对象是否属于特定类或其子类。 - 等于`==`和...
位移运算符`<<`和`>>`分别用于左移和右移位,`>>>`是无符号右移,移位过程中高位不会填充符号位。 最后,赋值运算符允许我们简洁地进行赋值操作,比如`x+=y`相当于`x = x + y`。同时,Java支持将其他运算符与赋值...
6. 移位运算符:`<<`、`>>`、`>>>` —— 从左到右执行,用于位移操作,如 `a << 2`。 7. 关系运算符:`<`、`<=`、`>`、`>=`、`instanceof` —— 从左到右执行,用于比较操作,如 `a < b`。 8. 相等运算符:`==`、`...
- 位运算符:如按位取反(`~`), 按位与(`&`), 按位或(`|`), 按位异或(`^`)以及位移运算符,如左移(`<<`), 带符号右移(`>>`)和无符号右移(`>>>`)。位移运算符常用于快速计算乘法和除法。 2. 随机数(Random): ...
5. **位移运算** `<< >> >>>` 6. **比较运算** `< > <= >= instanceof` 7. **相等运算** `== !=` 8. **按位与运算** `&` 9. **按位异或运算** `^` 10. **按位或运算** `|` 11. **逻辑与运算** `&&` 12. **逻辑或运算...
知识点6:Java位移操作符 在Java中,有两种位移操作符:>>和>>>. >>是带符号位移操作符,>>>是无符号位移操作符。例如,1010 0000 0000 0000 0000 0000 0000 0000 >> 4将结果为0000 1010 0000 0000 0000 0000 0000 ...
位运算符直接作用于整数类型的二进制表示,包括与(&)、或(|)、异或(^)、非(~)以及左移(<<)和右移(>>、>>>). 这些运算符在进行位级操作时非常有用,比如在位掩码、数据加密、优化算法等方面。 1. **与(&)**: 它执行...