左移位操作


左移位运算的符号为【<<】,左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。

左移位运算是双目运算符,操作元必须是整型类型的数据,其移动过程是:【a << n】运算的过程是通过将a的所有位都左移n位,每左移一个位,左边的最高位上的0或1被移出丢弃,并用0填充右边的低位

注意:

  1. 如果a是byte、short或int型数据,总是先计算出n%32的结果m,然后进行a<<m运算
  2. 对于long型数据,总是先计算出n%64的结果m,然后进行a << m运算

右移位操作

右移位运算的符号为【>>】,右移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。

右移位运算时双目运算符,操作元必须是整型类型的数据,其移动过程是:【a >> n】运算的过程是通过将a的所有位都右移n位,每右移一个位,右边的最低位上的0或1被移出丢弃,并用0或1填充左边的高位【a是正数时用0填充,负数时用1填充】

注意:

  1. 如果a是byte、short或int型数据,总是先计算出n%32的结果m,然后进行a<<m运算
  2. 对于long型数据,总是先计算出n%64的结果m,然后进行a << m运算
/**************************************华丽的分割线性**************************************************/
      以下为常用的比特位操作
/****************************************************************************************************/
public class BitUtil {

    public static int alterBitValue(int source,int pos,boolean zero) {
if(zero) { /**source的第pos比特位置为0*/
return source & Integer.MAX_VALUE ^ (1 << pos -1);
}
/**source的第pos比特位置为1*/
return source | (1 << pos -1);
} public static int getBitValue(int source,int pos) {
/**保留source第pos位的比特值,其余为置为0*/
source = source & (Integer.MAX_VALUE & (1 << pos -1));
source = source >> pos -1;
if(source == 1)
return 1;
return 0;
} public static void main(String []args) {
/**结果应为4*/
System.out.println(BitUtil.alterBitValue(6, 2, true));
/**结果应为19*/
System.out.println(BitUtil.alterBitValue(3, 5, false));
/**结果应为0*/
System.out.println(BitUtil.getBitValue(5, 2));
/**结果应为1*/
System.out.println(BitUtil.getBitValue(5, 3));
} }

Java的位运算的更多相关文章

  1. Java的位运算 待整理

    位运算:二进制运算 Java的异或运算^ 真^假=真 假^真=真 假^假=假 真^真= 假,这四个是在网上copy的例子,真是1,假是0 但它却是说明了Java异或运算的基本法则,那就是:只要两个条件 ...

  2. java中位运算

    1byte(字节)=8bit(比特) 1 0 0 0 0 0 0 0 1   2进制的1的原码 反码 补码 0 0 0 0 0 0 0 0   2进制的0的原码 反码 补码 -1 1 0 0 0 0 ...

  3. java中位运算和移位运算详解

    一.位运算 (1)按 位 与 & 如果两个相应的二进制形式的对应的位数都为1,则结果为1,记为同1为1,否则为0.首先我们看一下对正数的运算        分别看一下正数和负数的具体运算步骤 ...

  4. 《Thinking in Java》位运算

    按位操作符: 首先先记住一件事,方便理解:是否对应正负对应10. 1.与(&):11得1,10得0,00得0. 2.或(|):11得1,10得1,00得0. 3.异或(^):11得0,10得1 ...

  5. java中位运算^,&,<<,>>,<<<,>>>总结

    1.^(亦或运算) ,针对二进制,相同的为0,不同的为1 public static void main(String[] args) { System.out.println("2^3运算 ...

  6. JAVA有关位运算的全套梳理

    一.在计算机中数据是如何进行计算的? 1.1:java中的byte型数据取值范围 我们最开始学习java的时候知道,byte类型的数据占了8个bit位,每个位上或0或1,左边第一位表示符号位,符号位如 ...

  7. Java中的位运算

    昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~  按位非(NOT)(一元运算) ...

  8. java位运算

    Java的位运算(bitwise operators)直接对整数类型的位进行操作,这些整数类型包括long.int.short.char和 byte,位运算符具体如下表: 运算符 说明 << ...

  9. Java基础-一文搞懂位运算

    在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+.-.*./.%).关系运算(<.>.<=.>=.==.!=)和逻辑运算(&&.||.!), ...

随机推荐

  1. webpack最佳入门实践系列(4)

    7.使用字体 7.1.安装字体库-font-awesome 我们通过npm来安装字体 npm install font-awesome --save 这个时候,我们的package.json配置文件变 ...

  2. 厌倦了ListBox打印消息,使用RichTextBox试试吧

    背景 Winform打印后台线程运行时消息,习惯用ListBox,有时候某行消息过长,设置个Tooltip控件提示全部信息.后来无意中看到同事使用RichTextBox打印消息,然后在不同的消息类别上 ...

  3. zlib编译不过(Error A2070)解决方法(转)

    原文转自 http://dearymz.blog.163.com/blog/static/2056574200871010027435/ 1.zlib是个很牛的东东,从http://www.zlib. ...

  4. 这绝对是有史以来最详细的web前端学习路线

    定要善用开发者工具.firefox的firebug和Chrome的F12都是很好的选择,用好了这个必会发现他带给你的帮助比看一本书更多.你把firebug摸透了你还担心对DOM理解不够?考虑到未来,h ...

  5. git回溯到指定版本

    git回溯到指定版本 git log命令查看仓库日志 然后使用git checkout 命令 例如回溯到上图中的版本 git checkout 12db5d6fd138922a8aaf2214c84c ...

  6. 2018 JUST Programming Contest 1.0 题解

    题目链接  gym101778 Problem A 转化成绝对值之后算一下概率.这个题有点像 2018 ZOJ Monthly March Problem D ? 不过那个题要难一些~ #includ ...

  7. JDBC二部曲之_入门

    JDBC 1 什么是JDBC? JDBC(Java DataBase Connectivity),即Java数据库连接!也就是说,Java程序员可以使用JDBC API来操作数据库. 最早JDBC是J ...

  8. POJ3261 Milk Patterns(二分+后缀数组)

    题目求最长的重复k次可重叠子串. 与POJ1743同理. 二分枚举ans判定是否成立 height分组,如果大于等于ans的组里的个数大于等于k-1,这个ans就可行 #include<cstd ...

  9. C++中static、const使用方法简介

    众所周知,在c++中,static和const的使用方法是难点,也是重点,值得我们随时温习,所谓温故而知新是也. 下面我们首先说一说static. 1.static的作用 static变量的作用,主要 ...

  10. iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)

    以前比较懒,遇到问题解决了就完事了,有些问题再次遇到时忘记了当初是怎么解决的,又要查各种资料来解决.好记忆不如烂笔头,不管简单还是复杂都记一下吧,所以决定写一篇常见问题总结,方便以后查阅.现在有点忙, ...