Java基础:进制

本文详细介绍了二进制、八进制、十进制和十六进制之间的转换规则,并通过实例展示了转换过程。此外,还探讨了二进制在计算机运算中的重要性,包括位运算在Java中的应用。内容涵盖二进制的运算规则、原码、反码和补码的概念,以及它们在数值计算中的实际运用。
摘要由CSDN通过智能技术生成

1 进制

1.1 进制介绍

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

1.2 进制的图

在这里插入图片描述
在这里插入图片描述

2 进制的转换

2.1 二进制转换成十进制示例

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2(位数-1)次方,然后求和。
案例:请将0b1011转成十进制的数
0b1011 =1*2(1-1)次方+1 *2(2-1)次方+0*2(3-1)次方+1*2(4-1)次方法=1 +2+0+8=11

2.2 八进制转换成十进制示例

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
案例:请将0234转成十进制的数
0234= 4*8^0+ 3*8 ^1+2*8 ^2= 4 + 24+128=156

2.3 十六进制转换成十进制示例

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。
案例:请将0x23A转成十进制的数
0X23A=10*16^0+3*16 ^1+2*16 ^2=10+48+512 =570

2.4 十进制转换成二进制

规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。
案例:请将34 转成二进制=0B00100010

在这里插入图片描述

2.5 十进制转换成八进制

规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制。
案例:请将131转成八进制=>0203

在这里插入图片描述

2.6 十进制转换成十六进制

规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制。
案例:请将237转成十六进制=>OxED

在这里插入图片描述

2.7 二进制转换成八进制

规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。
案例:请将ob11010101转成八进制
ob11(3)010(2)101(5) => 0325

2.8 二进制转换成十六进制

规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
案例:请将 ob11010101转成十六进制
ob1101(D)0101(5)  =  0xD5

2.9 八进制转换成二进制

规则:将八进制数每1位,转成对应的一个3位的二进制数即可。
案例:请将0237转成二进制
02(010)3(011)7(111)=0b10011111

2.10 十六进制转换成二进制

规则:将十六进制数每1位,转成对应的4位的一个二进制数即可。
案例:请将0x23B转成二进制
Ox2(0010)3(0011)B(1011) = 0b001000111011

3 二进制在运算中的说明

1.二进 制是逢2进位的进位制,01是基本算符。
2.现代的电子计算机技术全部采用的是二进制,因为它只使用O1两个数字符号,
非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用01两个数字及其组合来表示任何数。进位规则是"逢2进1",数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。

4 原码、反码、补码(重点难点)

在这里插入图片描述

5 位于运算符

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

在这里插入图片描述

//推导过程
//1. 先得到 2的补码 => 2的原码 00000000 00000000 00000000 00000010
//   2的补码 00000000 00000000 00000000 00000010
//2. 3的补码 3的原码 00000000 00000000 00000000 00000011
//   3的补码 00000000 00000000 00000000 00000011
//3. 按位&
//   00000000 00000000 00000000 00000010
//   00000000 00000000 00000000 00000011 
//   00000000 00000000 00000000 00000010 & 运算后的补码
//   运算后的原码 也是  00000000 00000000 00000000 00000010
//   结果就是  2
System.out.println(2&3);//2

//推导
//1. 先得到 -2的原码 10000000 00000000 00000000 00000010
//2. -2的 反码 	    11111111 11111111 11111111 11111101
//3. -2的 补码       11111111 11111111 11111111 11111110
//4. ~-2操作        00000000 00000000 00000000 00000001运算后的补码
//5. 运算后的原码 就是 00000000 00000000 00000000 00000001 => 1
System.out.println(~-2);//1

//推导
//1. 得到2的补码 00000000 00000000 00000000 00000010
//2. ~2操作     11111111 11111111 11111111 11111101  运算后的补码
//3. 运算后的反码  11111111 11111111 11111111 11111100
//4. 运算后的原码  10000000 00000000 00000000 00000011=>-3
System.out.println(~2); //-3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-努力搬砖的小刘-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值