零基础学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天~

浙公网安备 33010602011771号