##### 进制的介绍

本文详细介绍了Java中的进制表示,包括十进制、二进制、八进制和十六进制的书写格式,并展示了如何进行任意进制与十进制之间的转换。此外,还讲解了位运算的基本概念,包括位与、位或、位异或和位移运算,并通过实例演示了数据交换和数组反转的方法。
摘要由CSDN通过智能技术生成

1、进制的介绍与书写格式

在这里插入图片描述
在这里插入图片描述
win+R 输入calc能打开计算器
在这里插入图片描述

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

public class Demo1 {
/*
十进制:Java中,数值默认都是10进制,不需要加任何修饰。
二进制:数值前面以0b开头,b大小写都可以。
八进制:数值前面以0开头。
十六进制:数值前面以0x开头,x大小写都可以。
注意: 书写的时候, 虽然加入了进制的标识, 但打印在控制台展示的都是十进制数据.
*/

public static void main(String[] args) {
System.out.println(10);
System.out.println("二进制数据0b10的十进制表示为:" + 0b10);//2
System.out.println("八进制数据010的十进制表示为:" + 010);//8
System.out.println("十六进制数据0x10的十进制表示为:" + 0x10);//16
}

2、任意进制到十进制的转换

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

3、进制转换-十进制到任意进制转换

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

4、快速进制转换法

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

5、原码反码补码

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

6、位运算-基本位运算符

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

package com.itheima.demo;
public class Demo2 {
/*
位运算:
位运算符指的是二进制位的运算,先将十进制数转成二进制后再进行运算。
在二进制位运算中,1表示true,0表示false。
& 位与 : 遇false则false, 遇0则0
00000000 00000000 00000000 00000110 // 6的二进制
& 00000000 00000000 00000000 00000010 // 2的二进制
-----------------------------------------
00000000 00000000 00000000 00000010 // 结果: 2
| 位或 : 遇true则true, 遇1则1
^ 位异或 : 相同为false, 不同为true
~ 取反 : 全部取反, 0变1, 1变0 (也包括符号位)
00000000 00000000 00000000 00000110 // 6的二进制补码
~ 11111111 11111111 11111111 11111001
- 1 // -1求反码
------------------------------------
11111111 11111111 11111111 11111000 // 反码推原码
10000000 00000000 00000000 00000111 // -7
*/
public static void main(String[] args) {
System.out.println(6 & 2);
System.out.println(~6);
}
}

7、位运算-位移运算符

在这里插入图片描述

在这里插入图片描述

package com.itheima.demo;
public class Demo3 {

/*
位移运算符:
<< 有符号左移运算,二进制位向左移动, 左边符号位丢弃, 右边补齐0
运算规律: 向左移动几位, 就是乘以2的几次幂
12 << 2
(0)0000000 00000000 00000000 000011000 // 12的二进制
-----------------------------------------------------------------------------
>> 有符号右移运算,二进制位向右移动, 使用符号位进行补位
运算规律: 向右移动几位, 就是除以2的几次幂
000000000 00000000 00000000 0000001(1) // 3的二进制
-----------------------------------------------------------------------------
>>> 无符号右移运算符, 无论符号位是0还是1,都补0
010000000 00000000 00000000 00000110 // -6的二进制
*/

public static void main(String[] args) {
System.out.println(12 << 1); // 24
System.out.println(12 << 2); // 48
}
}
package com.itheima.demo;
public class Demo4 {

/*
^ 运算符的特点
一个数, 被另外一个数, 异或两次, 该数本身不变
*/

public static void main(String[] args) {
System.out.println(10 ^ 5 ^ 10);
}
}

8、数据交换

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

package com.itheima.test;
public class Test1 {
/*
需求:已知两个整数变量a = 10,b = 20,使用程序实现这两个变量的数据交换
最终输出a = 20,b = 10;
思路:
1. 定义一个三方变量temp,将a原本记录的值,交给temp记录 (a的值,不会丢了)
2. 使用 a 变量记录 b 的值,(第一步交换完毕,b的值也丢不了了)
3. 使用 b 变量记录 temp的值,也就是a原本的值 (交换完毕)
4. 输出 a 和 b 变量即可
*/
/*
动态初始化格式:
数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组,可以存放多少个元素
*/
public static void main(String[] args) {
int a = 10;
int b = 20;
// 将a原本记录的值,交给temp记录 (a的值,不会丢了)
int temp = a;
// 用 a 变量记录 b 的值,(第一步交换完毕,b的值也丢不了了)
a = b;
// 使用 b 变量记录 temp的值,也就是a原本的值 (交换完毕)
b = temp;
// 输出 a 和 b 变量即可
System.out.println("a=" + a);
System.out.println("b=" + b);
}
}

9、数组反转

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

public static void main(String[] args) {
int[] arr = {19, 28, 37, 46, 50};

// 交换逻辑代码
int temp = arr[0];
arr[0] = arr[4];
arr[4] = temp;
} 

for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);//50, 28, 37, 46, 19
}
package com.itheima.test;
public class Test2 {

/*
需求:已知一个数组 arr = {19, 28, 37, 46, 50}; 用程序实现把数组中的元素值交换,
交换后的数组 arr = {50, 46, 37, 28, 19}; 并在控制台输出交换后的数组元素。
步骤:
1. 定义两个变量, start和end来表示开始和结束的指针.
2. 确定交换条件, start < end 允许交换
3. 循环中编写交换逻辑代码
4. 每一次交换完成, 改变两个指针所指向的索引 start++, end--
5. 循环结束后, 遍历数组并打印, 查看反转后的数组
*/

public static void main(String[] args) {
int[] arr = {19, 28, 37, 46, 50};
// 1. 定义两个变量, start和end来表示开始和结束的指针.
int start = 0;
int end = arr.length -1;
// 2. 确定交换条件, start < end 允许交换
// 4. 每一次交换完成, 改变两个指针所指向的索引 start++, end--
// for(int start = 0, end = arr.length -1; start < end; start++, end--)
for( ; start < end; start++, end--){
// 3. 循环中编写交换逻辑代码
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
} 
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值