零基础学JAVA--Day5(进制+原码、反码、补码+位运算符) - 实践

键盘输入语句

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

例子:

import java.util.Scanner
//演示接受用户的输入步骤
//Scanner类表示简单文本扫描器,在java.util包
//1、引入/导入Scanner类所在的包
//2.创建Scanner对象,new创建一个对象,myScanner就是Scanner类的对象
Scanner myScanner = new Scanner(System.in);
//3、接收用户输入使用相关的方法
System.out.println("请输入名字");
//当程序执行到next方法时,会等待用户输入~
String name = myScanner.next();//接收用户输入字符串
System.out.println("请输入年龄");
int age = myScanner.nextInt();//接收用户输入int
System.out.println("请输入薪水");
doublesal=myScanner.nextDouble();//接收用户输入double
System.out.println("人的信息如下:");

进制

进制介绍
对于整数,有四种表示方式:
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不区分大小写。

进制的转换

二进制转十进制:规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。

例如:ob1010 = 10

八进制转十进制:规则:从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方,之后
求和。

例如:0234 = 4*1+3*8+2*64 = 156

十六进制转十进制:规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。

例如:0x23A = 10*1+3*16+2*16^2 = 570

后续各个进制的转换,笔者就不再赘述了。。

原码、反码、补码

几点知识:

1、二进制的最高位是符号位,0为正,1为负

2、正数的原码、反码和补码都是一样的

3、负数的反码:符号位不变,其余位取反

4、负数的补码:负数的反码+1;负数的反码:负数的补码-1

5、0的反码和补码都是0

6、java中所有的数都是有符号的

7、计算机计算时,采用的都是数的补码来运算

8、计算机输出时,要看它的原码

位运算符(依托于二进制)

七个位运算符:&,|,^,~,>>,<<和>>>

一、&,|,^,~

&(按位与):两个二进制数对应位都为1,则结果为1,否则为0

|(按位或):两个二进制数对应位有一个有1,则结果为1,否则为0

^(按位异或):两个二进制数不同,则结果为1,否则为0

~(按位取反):0变1,1变0

例子:

1、计算2&3:

2的原码:

00000000 00000000 00000000 00000010(2是int类型 4个字节 16比特)

2的补码:

00000000 00000000 00000000 00000010

3的原码:

00000000 00000000 00000000 00000011

3的补码:

00000000 00000000 00000000 00000011

2&3(2按位与3):

00000000 00000000 00000000 00000010

00000000 00000000 00000000 00000011

————————————————————

00000000 00000000 00000000 00000010(最后的结果)

转化为原码:00000000 00000000 00000000 00000010  =>  2

所以 2 & 3 = 2

2、计算~-2

-2的原码:10000000 00000000 00000000 00000010

-2的反码:111111111 11111111 11111111 11111101

-2的补码:111111111 11111111 11111111 111111110

取反~:00000000 00000000 00000000 00000001(补码)

取反后的原码:00000000 00000000 00000000 00000001

结果是 1

二、>>、<<和>>>

>>(算术右移):低位溢出,符号位不变,用符号位补齐溢出的高位

<<(算术左移):符号位不变,低位补0

>>>(逻辑右移/无符号右移):低位溢出,高位补0

例:

int a = 1>>2;  //1=>00000001=>00000000     本质1/2/2=0
int c = 1<<2;  //1=>00000001=>00000100     本质1*2*2=4

总结:算术右移 a>>b  本质上就是a整除b次的2

a乘上b次的2就是算术左移 a<<b  本质上就

复习:

a%b = a - (int) a / b* b

例如:-10.5%3 = ?

-10.5%3 = -10.5 - (-10)/3*3 = -10.5- (-9) = -1.5   (近似值)

————————————————————————————————

Day5 结束

一样的,我也可以吗?哈哈哈哈,加油!!就是今天我研究生学校本科软工的一个同学进字节了,给了我一点希望,我的学历比他高,学校层次也
距离回家还有88天~

posted @ 2025-11-11 10:28  gccbuaa  阅读(10)  评论(0)    收藏  举报