• 键盘输入语句和位运算


    键盘输入语句

    介绍:在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。需要一个 扫描器(对象), 就是Scanner
    注意:
    (1)导入该类的所在包, java.util.*
    (2)创建该类对象(声明变量)
    (3)调用里面的功能

    案例:可以从控制台接收用户信息,【姓名,年龄,薪水】

    import java.util.*;//键盘输入需要导入的包
    
    public class Case3 {
    	public static void main(String[] args) {
    		// 新建类对象 myScanner 就是 Scanner 类的对象
    		Scanner myScanner = new Scanner(System.in);
    		// 3. 接收用户输入了, 使用 相关的方法
    		System.out.println("请输入名字:");
    		// 接收用户输入字符串
    		String name = myScanner.next();
    		System.out.println("请输入年龄:");
    		// 接收用户输入 int
    		int age = myScanner.nextInt(); 
    		System.out.println("请输入薪水:");
    		// 接收用户输入 double
    		double sal = myScanner.nextDouble(); 
    		System.out.println("人的信息如下:");
    		System.out.println("名字=" + name + " 年龄=" + age + " 薪水=" + sal);
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    进制介绍

    对于整数,有四种表示方式:
    二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。
    十进制:0-9 ,满 10 进 1。
    八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
    十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 或 0X 开头表示。此处的 A-F 不区分大小写。

    案例:输出 二,十,八,十六进制的数据

    public class Case4 {
    	public static void main(String[] args) {
    		// n1 二进制
    		int n1 = 0b1010;
    		// n2 十进制
    		int n2 = 1010;
    		// n3 八进制
    		int n3 = 01010;
    		// n4 十六进制
    		int n4 = 0X10101;
    		System.out.println("n1=" + n1);
    		System.out.println("n2=" + n2);
    		System.out.println("n3=" + n3);
    		System.out.println("n4=" + n4);
    		System.out.println(0x23A);
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    进制开头
    二进制0b
    八进制0
    十六进制0x

    位运算

    原码、反码、补码

    1. 二进制的最高位是符号位:0表示正数, 1表示负数。
    2. 正数的原码,反码,补码都一样。
    3. 负数的反码 = 它的原码符号位不变,其它位取反(0->1,1->0)
    4. 负数的补码 = 它的反码 +1,负数的反码 = 负数的补码 -1
    5. 0的反码,补码都是0。
    6. java 没有无符号数,换言之,java中的数都是有符号的。
    7. 在计算机运算的时候,都是以补码的方式来运算的。
    8. 当我们看运算结果的时候,要看他的原码。
      计算机看补码,人看源码

    位运算符

    java 中有 7 个位运算(&、|、^、~、>>、<<和 >>>)

    分别是按位与&、按位或|、按位异或^、按位取反~,
    它们的运算规则是:
    按位与&:两位全为1,结果为1,否则为0
    按位或|:两位有一个为1,结果为1,否则为0
    按位异或|^∶两位一个为0,一个为1,结果为1,否则为0
    按位取反~:0->1,1->0

    还有 3 个位运算符 >>、<< 和 >>> , 运算规则:
    (1) 算术右移 >>: 低位溢出,符号位不变,并用符号位补溢出的高位
    (2) 算术左移 <<: 符号位不变,低位补 0
    (3) >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
    (4) 特别说明:没有 <<< 符号

    应用案例

    int a=1>>2; //1 => 00000001 => 00000000 本质 1 / 2 / 2 =0
    int c=1<<2; //1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4
    
    
    • 1
    • 2
    • 3

    位运算的思考题

    1. 请看下面的代码段,回答 a,b,c,d,e 结果是多少?

    public static void main(String []args)
    {
    int a=1>>2; // 1 向右位移 2 位
    /* 这里就按一个直接推(int型一般是4个字节)
    0000 0001 右移动2位,溢出的不要并用符号位补,
    所以得到 0000 0000 (补码) 0的源码和补码一样,
    即输出 0
    */
    int b=-1>>2;//算术右移
    /* 原 1000 0001 反 1111 1110 负数的补码 = 它的反码 +1;
    补 1111 1111 右移动2位,溢出的不要并用符号位补, 
    得 1111 1111(补码)负数的反码 = 负数的补码 -1,
    1000 0000(反),源码1000 0001 ,即输出 -1
    */
    int c=1<<2;//算术左移
    int d=-1<<2;//
    int e=3>>>2;//无符号右移
    //a,b,c,d,e 结果是多少
    System.out.println("a="+a);
    System.out.println("b="+b);
    System.out.println("c="+c);
    System.out.println("d="+d);
    System.out.println("e="+e);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在这里插入图片描述

    2. 请回答在 java 中,下面的表达式运算的结果是: (位操作)

    ~2=? // 按位取反
    2&3=?// 2 按位与 3
    2 ^ 3=? //^ 按位异或
    ~-5=?
    13 & 7=?
    5 | 4=?
    -3 | 3=?
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    public class Case6 {
    	public static void main(String[] args) {
    		int a = ~2;// 按位取反
    		//补 0000 0010 取反 1111 1101(补)
    		//负数的反码 = 负数的补码 -1
    		//1111 1100(反) 源码 1000 0011,即 -3
    		int b = 2 & 3;// 2 按位与 3
    		// 2 的补码 0000 0010 
    		// 3 的补码 0000 0011  按位与&:两位全为1,结果为1,否则为0
    		//         0000 0010,即 2
    		int c = 2 ^ 3;// ^ 按位异或
    		// 2 的补码 0000 0010 
    		// 3 的补码 0000 0011  按位或^:两位有一个为1,结果为1,否则为0
    		//         0000 0011,即 3
    		int d = ~-5;
    		int e = 13 & 7;
    		int f = 5 | 4;
    		//按位或|:两位有一个为1,结果为1,否则为0
    		// 5 补码 0000 0101
    		// 4 补码 0000 0100
    		//        0000 0101 即 5
    		int g = -3 | 3;
    		System.out.println("a=" + a);
    		System.out.println("b=" + b);
    		System.out.println("c=" + c);
    		System.out.println("d=" + d);
    		System.out.println("e=" + e);
    		System.out.println("f=" + f);
    		System.out.println("g=" + g);
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述

  • 相关阅读:
    【QT小记】QT线程同步--QWaitCondition
    Yarn基础入门
    学生HTML个人网页作业作品:HTML绿色的化妆品静态网站(web前端网页制作课作业)
    【SpringMVC】工作流程
    广联达笔试题
    JAVA--枚举类
    前后端------新增/修改
    温故知新(十四)——LIN
    Linux通过PID号找到对应的进程名及所在目录
    用Git上传项目gitLab(简单笔记)
  • 原文地址:https://blog.csdn.net/qq_53661628/article/details/127909580