Java-进制

进制

【二进制】

1.逢2进1的计数规则

2.使用2进制的好处,是设备制造成本低

3.java7提供了以 0b 开头的二进制直接量

4.二进制算法
64 32 16 8 4 2 1
----------------------
0 0 1 0 1 0 1-----16+4+1=21

5.4位数的二进制要熟练掌握

6.java中将int型转换成二进制数
Integer.toBinaryString(i)

  

【二进制的运算】

	~(取反)
	&(与)
	| (或)
	>>> 右移  >> 右移
	<< 左移
  • &运算、也是掩码计算
n     =   00111101 10101011 11110100 11101011
m     =   00000000 00000000 00000000 11111111  Mask、面具、掩码
k=n&m     00000000 00000000 00000000 11101011 

//如上运算的意义: 称为掩码(Mask)计算,计算结果k中保存的是n的最后8位数。

int n = 0x3dabf4eb;
//int m = 0xff; //8位掩码 
//int m = 0xffff; //16位掩码 
//int m = 0x3f; //6位掩码 
int m = 0xf; //4位掩码
int k = n & m;
System.out.println(Integer.toBinaryString(n));
System.out.println(Integer.toBinaryString(m));
System.out.println(Integer.toBinaryString(k));
  • 右移位计算>>>
将数字的整体向右移动,低位自动溢出舍弃,高位补0
	    b1       b2       b3       b4
n=        01101110 10100100 00011111 10110101
m=n>>>1   001101110 10100100 00011111 1011010
k=n>>>2   0001101110 10100100 00011111 101101
l=n>>>8   00000000 01101110 10100100 00011111
b4=n & 0xff;
b3=(n>>>8) & 0xff
	  00000000 00000000 00000000 00011111
b2=(n>>>16) & 0xff
b1=(n>>>24) & 0xff

int n = 0x6ea41fb5;
int m = n>>>1;
int k = n>>>2;
int l = n>>>8;
int b4 = n & 0xff;
int b3 = (n>>>8) & 0xff;
int b2 = (n>>>16) & 0xff;
int b1 = (n>>>24) & 0xff;
  • 左移位计算<<
  1. 将数字的整体向左移动,高位自动溢出,低位补0
  2. 移位计算的数学意义:二进制左移位计算,每移动一次数字整体扩大2倍
    int n = 50;
    int m = n<<1; //100
  3. 经典面试题目
    表达式 n * 8 可以替换为( n << 3)---------2^3=8
  • 区别 >>> 和 >>
    .>>> 称为逻辑右移位计算:无论正数还是负数,数字整体右移动低位溢出高位补0,逻辑上将数字整体右移动,不考虑符号问题。

    .>> 称为数学右移位计算:正数时候,数字整体右移动低位溢出高位补0
    负数时候,数字整体右移动低位溢出高位补1,移动以后相当于数学除法,向小方向取正数。

正数时候
n        00000000 00000000 00000000 00110010  50
m=n>>>1  000000000 00000000 00000000 0011001  25
k=n>>1   000000000 00000000 00000000 0011001  25
g=n>>2   0000000000 00000000 00000000 001100  12   

负数时候
n        11111111 11111111 11111111 11001110 -50
m=n>>>1  011111111 11111111 11111111 1100111 max-24
k=n>>1   111111111 11111111 11111111 1100111 -25
g=n>>2   1111111111 11111111 11111111 110011 -13

经典面试题目
表达式 n/2 (n>0的时候) ----可以替换为 (n>>1)---------2^1=2

   

【十六进制】

  1. 十六进制用于简写二进制!!!(在企业中,一般用十六进制表示)

  2. 十六进制的基数是二进制基数的4次幂

  3. 二进制从低位到高位的每四个数字可以缩写为一个十六进制

   

【补码】

  1. 计算机中处理负数的一种编码。其设计思路是将固定位数的二进制分一半作为负数使用

  2. int类型是32位补码,分析繁琐

  3. 补码的对称性(取反)_
    公式: -n = ~n + 1

  4. 经典面试题目:
    System.out.println(~20+1);
    如上语句输出结果是 ( B ): A.-19 B.-20 C.-21 D.-22

    System.out.println(~20);
    如上语句输出结果是 ( C ): A.-19 B.-20 C.-21 D.-22

    System.out.println(~-20);
    如上语句输出结果是 ( A ): A.19 B.20 C.21 D.22

  5. 认识负数的补码
    11111111111111111111111111111011--------(-5)
    11111111111111111111111111111100--------(-4)
    11111111111111111111111111111101--------(-3)
    11111111111111111111111111111110--------(-2)
    11111111111111111111111111111111---------(-1)
    0------------------------------------------0
    1------------------------------------------1
    10----------------------------------------2
    11----------------------------------------3
    100--------------------------------------4
    101--------------------------------------5
    //认识负数补码的值
    for(int i=-150;i<=5;i++) {
    System.out.println(Integer.toBinaryString(i));
    }

  

【浮点数的进制运算太复杂不考虑】

Java浮点数采用IEEE-754标准

图1:计算机识别
在这里插入图片描述

图2:计数规律
在这里插入图片描述

图3:十六进制
在这里插入图片描述

图4:补码互补对称
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值