Java笔记1(位运算)

1、位运算:| 操作符使用
public class WeiHuoTest{
       public static void main(String[] args){
               int number1 = 10;
              int number2 = 8;
  /*
    number1: 10
    0000 0000 0000 0000 0000 0000 0000 1010
    number2: 8
    0000 0000 0000 0000 0000 0000 0000 1000
  -----------------------------------------
  0000 0000 0000 0000 0000 0000 0000 1010
  0000 0000 0000 0000 0000 0000 0000 1000
  ---------------------------------------
  0000 0000 0000 0000 0000 0000 0000 1010 --->10
   
  */
  System.out.println(number1|number2);
 }
}

2、位运算符:& 的操作

public class WeiYuTest{

public static void main(String[] args){

int number1 = 10;

int number2 = 8;

/*     number1: 10

0000 0000 0000 0000 0000 0000 0000 1010

number2: 8

0000 0000 0000 0000 0000 0000 0000 1000

------------------------------------------

0000 0000 0000 0000 0000 0000 0000 1010

0000 0000 0000 0000 0000 0000 0000 1000

---------------------------------------

0000 0000 0000 0000 0000 0000 0000 1000----->8

*/

System.out.println(number1&number2);  } }

3、位运算符:^ 异或操作符的使用

public class WeiYiHuoTest{

public static void main(String[] args){

int number1 = 10;   int number2 = 8;

/*     number1: 10

0000 0000 0000 0000 0000 0000 0000 1010

number2: 8

0000 0000 0000 0000 0000 0000 0000 1000

-----------------------------------------

0000 0000 0000 0000 0000 0000 0000 1010

0000 0000 0000 0000 0000 0000 0000 1000

---------------------------------------

0000 0000 0000 0000 0000 0000 0000 0010---->2   */

System.out.println(number1^number2);  } }

4、位运算符:>>、<<操作符的使用

public class WeiYiDong{

public static void main(String[] args){

int number = 8;

/* 右移

0000 0000 0000 0000 0000 0000 0000 1000

0000 0000 0000 0000 0000 0000 0000 0010    ---->2   */

System.out.println(number>>2);

/* 左移

0000 0000 0000 0000 0000 0000 0000 1000

0000 0000 0000 0000 0000 0000 0010 0000    ---->32   */              System.out.println(number<<2);

int number1 = -8;

/* 右移

1000 0000 0000 0000 0000 0000 0000 1000

1000 0000 0000 0000 0000 0000 0000 0010      -2    */

System.out.println(number1>>2);    } }

5、位运算:>>>无符号的右移

public class WeiWfh{

public static void main(String[] args){

int number = -10;

/*

1000 0000 0000 0000 0000 0000 0000 1010(原码)

1111 1111 1111 1111 1111 1111 1111 0101(反码)

+                                                                  1

------------------------------------------

1111 1111 1111 1111 1111 1111 1111 0110 (补码)

0011 1111 1111 1111 1111 1111 1111 1101  移位后的(正数)

----------------------------------------

0011 1111 1111 1111 1111 1111 1111 1101(正数的原码)

*/

System.out.println(number>>>2);  } }

时间: 2024-08-29 12:16:23

Java笔记1(位运算)的相关文章

Java笔记:位运算

一.数据存储 二进制数在内存中以补码的形式存放.正数的反码.补码均为本身.负数的反码为符号位不变且其余位取反,补码为反码+1. 二.位运算 ①按位取反:反转操作数中的所有位. ②按位与:仅当两个操作数都是1,结果为1.否则为0. ③按位或:只要有一个操作数是1,结果为1.否则为0. ④按位异或:只有一个操作数是1,结果为1.否则为0. ⑤左移:将不包括符号位的所有数值向左移动指定次数,右边补充0.每左移一位相当于*2. ⑥右移:将不包括符号位的所有数值向右移动指定次数,左边补充0.每右移一位相当

java中的位运算

刚才在imooc看php基础发现一个特别容易让我们理解的描述[关于异或运算的] 之前学习java的时候 位运算有4种,当时是这样记录的: &  按位与 (and) 两个对应二进制都为1则为1,其余全为0 |   按位或(or) 两个二进制数有一个为1则为1,只有两个0才为0 ~  按位非(NOT) 二进制中取反 ^  按位异或(XOR) 两个二进制中相同为则为0,不同则为1             其实最难以理解的就是这个异或运算. 直接搬过来(原网址点我): 我们可以从投票的角度来理解逻辑运算

java中通过位运算实现多个状态的判断

通过 <<  |  & ~ 位运算,实现同时拥有多个状态 通过 << 定义数据的状态 public interface LogConstants { /** * 消耗标记 */ short COST_ASSET = 1 << 0; short COST_GOLD = 1 << 1; short COST_BINDGOLD = 1 << 2; short COST_SOPH = 1 << 3; short COST_STRSOU

Java负数的位运算

/** * 求负数的位运算 *///1. -10 >> 2 = ?//2. -10的原码: 1000 0000 0000 0000 0000 0000 0000 1010 最高位代表符号位//3. -10的反码: 1111 1111 1111 1111 1111 1111 1111 0101 符号为不变,其他位相反//4. -10的补码:1111 1111 1111 1111 1111 1111 1111 0110 补码为反码加1//5. 补码右移2为:1111 1111 1111 1111

Java 基础 之 位运算

http://www.verejava.com/?id=16992602784016 public class Operation5 { public static void main(String[] args) { //位运算 /* 包括: 与 &, 或 |, 取反 ~, 异或 ^ 带符号左移<<, 带符号右移 >>, 无符号右移 >>> 1. & 就是二进制位如果都是1则为1,否则为0 2. | 就是二进制位如果都是0则为0,否则为1 3.

Java中关于位运算的面试题

位运算的效率是最高的,因为位位运算是直接对二进制进行操作 位运算只能应用于整型和char类型(char类型可以看做是特殊的无符号的整形) 面试题: a: 判断一个数是否是奇数 a & 1 == 1; b: 对2 ^ n 取余. a & (2^n - 1); c: 如何判断一个数是否是2^n a & (a-1) == 0: d: 两个整数之间的交换: e: 用最有效率的方式求2 * 8的值 2 << 3; a: 判断一个数是否是奇数 a & 1 == 1; /*

java中的位运算及移位运算

为了方便对二进制位进行操作,Java给我们提供了以下四个二进制位操作符: &    按位与 |     按位或 ^    按位异或 ~    按位取反 Java中有三个移位运算符: 左移:<<                        丢弃最高位,0补最低位:num << 1,相当于num乘以2 带符号右移:>>               符号位不变,左边补上符号位:num >> 1,相当于num除以2 无符号右移:>>>  

【java】之位运算^,&amp;,&lt;&lt;,&gt;&gt;,&lt;&lt;&lt;,&gt;&gt;&gt;总结

1.^(亦或运算) ,针对二进制,相同的为0,不同的为1 public static void main(String[] args) { System.out.println("2^3运算的结果是 :"+(2^3)); //打印的结果是: 2^3运算的结果是 :1 } 2 =======>0010 3 =======>0011 2^3就为0001,结果就是1 2.&(与运算) 针对二进制,只要有一个为0,就为0 还是上述的例子 public static void

java面试之位运算(如何不通过第三方变量交换两个数字,效率最高的乘法运算)

class Demo2_Operator { public static void main(String[] args) { /* * 位异或运算符的特点 * ^的特点:一个数据对另一个数据位异或两次,该数本身不变. */ //System.out.println(5 ^ 10 ^ 10); //System.out.println(5 ^ 10 ^ 5); /* * 请自己实现两个整数变量的交换(不需要定义第三方变量) * 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型.

Java 位运算

一,Java 位运算 1.表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1.补码的表示需要满足如下要求. (l)正数的最高位为0,其余各位代表数值本身(二进制数). (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1. 2.位运算符 位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算.位运算符可以分为逻辑运算符(包括~.&.|和^)及移位运算符(包括>>.<<和>>>). 1)左