左移位操作


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

左移位运算是双目运算符,操作元必须是整型类型的数据,其移动过程是:【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. 经典js框架

    http://requirejs.org/ http://durandaljs.com/ http://knockoutjs.com/index.html http://www.jeasyui.com ...

  2. ubuntu安装mysql报错

    ubuntu换源后安装mysql报错: 原因:版本高,不兼容,只需要还原apt下载源,然后 sudo apt-get install mysql-server即可正常安装mysql

  3. vmware上搭建kickstart 网络安装centos6.2的过程

    前言 什么是PXE? PXE(Pre-boot Execution Environment,预启动执行环境)协议使计算机可以通过网络启动.协议分client和server. PXE client 在网 ...

  4. MPchartAnadroid的对比柱状图

    1.导入三方jar包(可参照) MPAndroidChart(GitHub上优秀得图表功能库) MPAndroidChart常见设置属性(一)——应用层 2.布局activity_main.xml(这 ...

  5. python的递归算法学习(1)

    递归函数在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以 ...

  6. Vue.js入门第一课

    这个好像比ANGULAR.JS要轻量一些,看看. <!DOCTYPE html> <html> <head> <meta charset="utf- ...

  7. 16aspx源码要求安装.csproj类型怎么安装

    更改打开方式(不要双击打开),右键项目-打开方式选VS打开(应该会出现一个转换界面,转换下就好了).如果没有出那个界面我也没办法了

  8. HDU 2546 饭卡【贪心+01背包】

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  9. 华农oj 2192: hzk又在打人【CRT合并/待补】

    2192: hzk又在打人 Time Limit: 12 Sec Memory Limit: 512 MB Submit: 52 Solved: 1 [Submit][Status][Web Boar ...

  10. Codeforces Round #444 (Div. 2)A. Div. 64【进制思维】

    A. Div. 64 time limit per test 1 second memory limit per test 256 megabytes input standard input out ...