java学习--第四天(补充)

15 篇文章 0 订阅
15 篇文章 0 订阅

本章是进制转换和位运算,属于重点,且必须必须动手。原码、反码、补码的内容总结必须要背下来,不能只会应用层面的开发,不懂不熟悉底层的原理。不然落下的东西迟早都要补回来了,而且补的很麻烦,不如这次系统全给学完弄懂了。实在搞不懂的建议看一遍原视频

另外进制转换是自己手写的,字有些丑,大家将就着看。所有章节的内容一定一定要动手完成

附原视频链接:【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili


Java基础-进制及其转换

键盘输入Scanner

学习进制及其转换之前,需要先看下键盘输入的语法

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java,需要一个扫描器(对象),就是 Scanner

代码示例:

import java.util.Scanner;  //需要导入Scanner类
public class input{
	public static void main(String[] args){
		//创建Scanner对象,new创建一个对象
		//myScanner 就是Scanner类的对象
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入你的名字:");
		//接收用户的输入,给name变量
		String name = myScanner.next();
		
		System.out.println("请输入你的年龄:");
		int age = myScanner.nextInt(); //查文档可以看到该方法
		
		System.out.println("请输入你的薪水:");
		double salary = myScanner.nextDouble();
		
		System.out.println("你的信息如下:");
		System.out.println("name:" + name + "age:" + age + "salary:" + salary);
		
	}
}

进制

进制介绍

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

示例代码

public class BinaryTest{
	public static void main(String[] args){
		int n1 = 0b1010; //二进制
		int n2 = 1010;   //十进制 
		int n3 = 01010;  //八进制
		int n4 = 0X10101;//十六进制
		
		System.out.println("n1=" + n1);
		System.out.println("n2=" + n2);
		System.out.println("n3=" + n3);
		System.out.println("n4=" + n4);
	}
}

进制转换

二、八、十六进制 转 十进制

十进制转二、八、十六进制

二进制 转 八、十六进制

八、十六进制 转 二进制

原码、反码、补码(重点,背下来)

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

位运算

java重有七个位运算(& | ^ ~ >> << >>>)

分别是按位与& 按位或| 按位异或^ 按位取反~

按位与&:两位全为1 结果为1 否则为0

按位或|:两位有一个为1 结果为1 否则为0

按位异或^:两位一个为0,一个为1;结果为1 否则为0

按位取反~: 0->1 1->0

按位与&例子:

public class TernaryOperatorDetail{
	public static void main(String[] args){
		//1、  2和3进行按位与
		//2、  取得2的补码(前面说过计算机运算的时候,都是以补码的方式来运算)
		//3、  要知道2的补码,先拿到2的原码=》00000000 00000000 00000000 00000010(正数相同)
		//4、  取得3的补码,要知道3的补码,先拿到3的原码
		//5、  3的原码=》00000000 00000000 00000000 00000011(正数相同)
		//6、  00000000 00000000 00000000 00000010
		//7、  00000000 00000000 00000000 00000011
		//8、 =00000000 00000000 00000000 00000010(运算后的补码,但结果是原码,为正,相同)
		//9、  结果,十进制=2
		
		System.out.println(2&3);
	}
}
>2

按位取反~例子:

public class TernaryOperatorDetail{
	public static void main(String[] args){
		//-2的原码:10000000 00000000 00000000 00000010
		//根据规则,补码运算,要先知道反码
		//反码:11111111 11111111 11111111 11111101
		//补码:11111111 11111111 11111111 11111110
		//按位取反:00000000 00000000 00000000 00000001 
		//结果要看他的原码,就是他本身
		//1
		System.out.println(~-2);
	}
}
>1

位运算符号

  1. 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位
  2. 算术左移 <<:符号位不变,低位补0
  3. >>>逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0
  4. 没有<<<符号

位运算可以理解为位移运算

public class hello{
	public static void main(String[] args){
		
		int a = 1>>2; //1向右位移2位 00000000 00000000 00000000 00000001 =》00000000 00000000 00000000 00000000  01低位01被顶出去两格
		//本质 1/2/2
        int b = -1>>2; //-1向右位移2位 负数要在补码状态下运算,结果取原码
		int c = 1<<2; //1向左位移2位 00000000 00000000 00000000 00000001 =》 00000000 00000000 00000000 00000100
        //本质 1*2*2
		int d = -1<<2; //-1向左位移2位
		int e = 3>>>2; //算数右移
		
		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);

	}

}
>a=0
>b=-1
>c=4
>d=-4
>e=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值