Java基础 3.17

1.进制

对于整数 有四种表示方式

  • 二进制: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 BinaryText {
	
	public static void main(String[] args){
		int a = 1010;//十进制
		int b = 0b1010;//二进制
		int c = 01010;//八进制
		int d = 0X1010;//十六进制
		System.out.println("a = " + a);//输出为1010
		System.out.println("b = " + b);//输出为10
		System.out.println("c = " + c);//输出为520
		System.out.println("d = " + d);//输出为4112

	}	
}

进制的转换(要掌握)

  • 二进制转十进制 从最低位(右边)开始 将每个位上的数提取出来 乘2的(位数-1)次方,然后求和
  • 八进制转十进制 从最低位(右边)开始 将每个位上的数提取出来 乘8的(位数-1)次方,然后求和
  • 十六进制转十进制 从最低位(右边)开始 将每个位上的数提取出来 乘16的(位数-1)次方,然后求和

  • 十进制转二进制 将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,得到对应的二进制
  • 十进制转八进制 将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,得到对应的八进制
  • 十进制转十六进制 将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,得到对应的十六进制

  • 二进制转八进制 从低位开始,将二进制数每三位一组,转成对应的八进制数即可
  • 二进制转十六进制 从低位开始,将二进制数每四位一组,转成对应的十六进制数即可
  • 八进制转二进制 将八进制数每一位,转成对应的一个3位的二进制数即可
  • 十六进制转二进制 将十六进制数每一位,转成对应的一个4位的二进制数即可

2.位运算

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

分别是按位与&、按位或|、按位异或^、按位取反~ 运算规则如下

  • 按位与& 两位全为1,结果为1,否则为0
  • 按位或| 两位有一个为1,结果为1,否则为0
  • 按位异或^ 两位一个为0,一个为1,结果为1,否则为0
  • 按位取反~ 0->1 1->0
  • 算术右移>> 低位溢出,符号位不变,并用符号位补溢出的高位
  • 算术左移<< 符号位不变,低位补0
  • 无符号右移(逻辑右移)>>> 低位溢出,高位补0
  • 无<<<符号 

eg:

int a = 1 >> 2;
int c = 1 << 2;

掌握以上即可,不用再进一步深入

3.原码、反码、补码(重点、难点、必背

  1. 二进制的最高位是符号位:0表示整数,1表示负数(记忆:0->0 1->- 九十度旋转 0还是0 1变-)
  2. 正数的原码,反码,补码都一样(三码合一)
  3. 负数的反码 = 它的原码符号位不变,其它位取反(0->1, 1->0)
  4. 负数的补码 = 它的反码+1,负数的反码 = 负数的补码-1
  5. 0的反码,补码都是0
  6. java没有无符号数,换言之,java中的数都是有符号的
  7. 在计算机运算的时候,都是以补码的方式来运算的(补码将正数和负数统一起来,高超的设计)
  8. 我们查看运算结果的时候,要看它的原码  

eg:

public class BitOperator {
	
	public static void main(String[] args) {
		//2 & 3
		//运算过程如下
		//1.得到2的原码 00000000 00000000 00000000 00000010
		//  得到2的补码 00000000 00000000 00000000 00000010
		//  得到3的原码 00000000 00000000 00000000 00000011
		//  得到3的补码 00000000 00000000 00000000 00000011
		//2.运算2 & 3   00000000 00000000 00000000 00000010
		//3.得到运算后补码的原码
		//				00000000 00000000 00000000 00000010
		//所以结果为2
		System.out.println(2 & 3);
	}	
}
public class BitOperator {
	
	public static void main(String[] args) {
		//运算 2 | 3
		//1.先得到2的原码 00000000 00000000 00000000 00000010
		//	再得到2的补码 00000000 00000000 00000000 00000010
		//  先得到3的原码 00000000 00000000 00000000 00000011
		//  再得到3的补码 00000000 00000000 00000000 00000011
		//  按位或运算    00000000 00000000 00000000 00000011
		//  再得到该补码的原码
		//				 00000000 00000000 00000000 00000011
		//  输出3
		System.out.println(2 | 3);
	}	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值