Java笔记2(位运算)

1、位运算符:~操作符的使用

public class Test22{

public static void main(String[] args){

int number1 = 2;

/*    符号位:0:代表整数  1:代表负数

0000 0000 0000 0000 0000 0000 0000 0010

取反: 1111 1111 1111 1111 1111 1111 1111 1101取反后发现为负数的二进制。

负数的二进制转换为十进制:需取反再+1.

负数的补码:反码+1

1000 0000 0000 0000 0000 0000 0000 0010

+                                                                1

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

1000 0000 0000 0000 0000 0000 0000 0011------(-3)

*/

System.out.println(~2);  } }

2、

public class Test{

public static void main(String[] args){

int number = 8;

/*

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

取反   1111 1111 1111 1111 1111 1111 1111 0111(补码)

负数原码=负数补码取反+1

1000 0000 0000 0000 0000 0000 0000 1000 (补码取反)

+                                                                 1

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

1000 0000 0000 0000 0000 0000 0000 1001 ---》-9   */

System.out.println(~8);  } }

3、逻辑运算符的使用
 public class LuoJiTest{
            public static void main(String[] args){
                    int number1 = 20;
                    int number2 = 30;
  //--&&:短路与
  //--(number1>number2):false  (number1>10):true
  // false&&true
  System.out.println("&&:短路与:"+((number1>number2)&&(number1>10)));
  //--||:短路或
  // false||true
  System.out.println("||:短路或:"+((number1>number2)||(number1>10)));
  //--!:非运算符
  //number1>number2-> 20>30 --false
  System.out.println("!:非运算符:"+(!(number1>number2))); 
  //--&:单与
  System.out.println("&:单与"+((number1>number2)&(number1>10)));
  //--|:单或
  System.out.println("|:单或"+((number1>number2)|(number1>10)));
  //--^:异或
  //(number1>number2):false (number1>10):true
  //false^true
  System.out.println("^异或:"+((number1>number2)^(number1>10)));
  System.out.println(true^true);
  System.out.println(false^false);
 } 
}

4、实现从键盘输入一个三位整数,并逆序输出

import java.util.Scanner;
public class HomeWorkTest{
             public static void main(String[] args){
  
  Scanner scan = new Scanner(System.in);
  int number = scan.nextInt();

int baiWei = number/100;
  int shiWei = number%100/10;
  int geWei = number%100%10;
  System.out.println("起始数据为:"+number);
  System.out.println("转换之后为:"+geWei+""+shiWei+""+baiWei);
  
 }
}

时间: 2024-11-11 16:35:40

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

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)左