进制(逢几进几)
class Demo01
{
public static void main(String[] args)
{
System.out.println(0b100);//0b开头,二进制
System.out.println(0100);//八进制
System.out.println(100);//十进制
System.out.println(0x100);//十六进制
}
}
进制转换
任意进制---》十进制
12345=1*10^4+...+5*10^0
位数*进制^(位数-1)---(公式)
例子:
100=1*8^2+0*8^1+0*8^0
十进制到任意进制
数/进制=商......倒过来取余数
256/10=25......6 //十进制
25/10=2..........5
2/10=0............2
64/8=8.....0 //八进制 256/16=16.......0 //十六进制
8/8=1.......0 16/16=1...........0
1/8=0.......1 1/16 =0.........1
1Kb=8bit
八进制转十进制(分开算结果,合并每位数就是十进制数)
111 100===74
421 400
4+2+1=7 4+0+0=4 ====74
什么是进制
进制:就是进位制,是人们规定的一种进位方法。(几进制就是逢几进一)
进制的分类:
* 十进制 * 二进制 * 八进制 * 十六进制
不同进制的表现形式
二进制的数据表现形式
* 由0,1组成。以0b开头
八进制的数据表现形式
* 由0,1,2…………7组成。以0开头
十进制的数据表现形式
* 由0,1,2.…………9组成。整数默认是十进制的
十进制的数据表现形式
* 由0,1,2.…………9组成。整数默认是十进制的
案例演示
* 输出不同进制表现以(100)为例
* 0b100(二进制)
* 0100(八进制)
* 100(十进制)
* 0x100(十六进制)
1. System.out.println(0b100);
2. System.out.println(0100);
3. System.out.println(100);
4. System.out.println(0x100);
任意进制到十进制的转换
十进制转十进制
例:12345=1*10^4 + 2*10^3 + 3*10^2 + 4*10^1 + 5*10^0
二进制转十进制
例:0b100=1*2^2 + 0*2^1 + 0*2^0
八进制转十进制
例:0100=1*8^2 + 0*8^1 + 0*8^0
十六进制转十进制
例:0x100=1*16^2 + 0*16^1 + 0*16^0
十进制到任意进制的转换
十进制到任意进制的转换原理---除积倒取余
· 十进制转十进制
· 例:12345/10=1234……5
· 1234/10=123……4
· 123/10=12……3
· 12/10=1……2
· 1/10=0……1
· 十进制转二进制
· 例:8/2=4.…………0
· 4/2=2.…………0
· 2/2=1.…………0
· 1/2=0.…………1
快速的进制转换法8421码
8421码及特点
8421码是中国大陆的叫法,8421码是BCD代码中最常用的一种.在这种编码方式中每一位二值代码的1都代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码。
* 二进制转十进制:把对应位数上的8421码依次相加
* 二进制转八进制:三位合一位,对应8421依次相加
* 二进制转十六进制:四位合一位,对应8421依次相加
* 十进制转二进制:对应8421码够减那位就补1否则是0
原码反码补码
原码:就是二进制定点表示法,即高位为符号位,“0”表示正,“1”表示负,其余位表示数据的大小。(第八位为符号位)
通过一个字节,也就是8个二进制位表示+7和-7
0(符号位) 0000111 ------- +7
1(符号位) 0000111 ------- -7
正数的原码,反码,补码都是他本身。(规律)
负数:
原码1 0000111
反码1 1111000 -------按位取反
+ 1 ---------按位取反加1
------------------------
补码1 1111001 负数补码
补码0 0000111 正数补码
10 0000000
又因为1Kb=8bit
所以取8位,1舍去
所以结果为0 0000000
反码:正数的反码与其原码相同;负数的反码是对其原码逐们取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1
+5 -5
1 000 0101 ----- -5
1 111 1010
+ 1
1 111 1011
0 000 0101 ------ +5
1 0 000 0000
java语言的数据类型
整数默认:int 小数默认:double
1. //各数据类型之间的取值
2. /*int x = 4;//-2147483648~2147483647,占用4个字节(-2的31次方到2的31次方-1)
3. byte b = 2;//-128~127占用1个字节(-2的7次方到2的7次方-1)
4. short s = 30000;//-32768~32767占用2个字节(-2的15次方到2的15次方-1)
5. long l = 4l;//-9223372036854774808~9223372036854774807,占用8个字节(-2的63次方到2的63次方-1)
6.
7. float f = 2.3f; //3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节
8. double d = 21.78;//1.797693e+308~ 4.9000000e-324 占用8个字节
9. char ch = 'a';
10. boolean bo = true;*/
11.
12. /*
13. 什么时候定义变量?
14. 当数据不确定的时候,需要对数据进行存储时。
15. 就定义一个变量来完成存储动作
16. */
各数据之间的类型转换
自动类型转换(也叫隐式类型转换)
强制类型转换(也叫显式类型转换)
案例一:
1. //类型转换
2. byte b= 3;
3. //b = b + 2; //这句进行自动类型转换
4. b= (byte)(b+ 2);//这句进行强制类型转换
5. System.out.println(b);
案例二:
1. //对比区别这两条输出语句
2. System.out.println('a');
3. System.out.println('a'+1);
运算符
· 算术运算符
· 赋值运算符
· 比较运算符
· 逻辑运算符
· 位运算符
· 三元运算符
算术运算符
赋值运算符
–= , +=, -=, *=, /=, %=
比较运算符
逻辑运算符
&:先判断第一个条件是否为真,再去判断:若为真则判断第二个条件是否符合,两者为真则为真。如果第一个条件为假则为假,不用去判断第二个条件。
&&:(并且),若两个为真则为真,否则为假
||:(或者),若一个为真则为真,若两个为假则为假
|:先判断第一个条件是否为真,是则为真。就不去判断第二个条件。
位运算符
三元运算符
格式:(条件表达式)?表达式1:表达式2;
——如果条件为true,运算后的结果是表达式1;
——如果条件为false,运算后的结果是表达式2;
程序流程控制
· 判断结构
· 选择结构
· 循环结构
>>>判断结构
>>> 选择结构
>>>循环结构
代表语句:while,do while,for
while语句格式
while (条件表达式)
{
执行语句;System.out.println();
A++;
}
先判断再执行
do while 语句格式
do
{
执行语句;
}while(条件表达式);
do while循环语句的特点就是无论条件是否成立,循环体内的语句至少都要执行一次
先执行再判断
for 语句格式
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
循环条件的三要素:
1.起始条件
2.终止条件
3.循环条件
**** ** ***
*
***
***** 2 1 0
* 1行---1
*** 2---3
***** 3--5
*** 4---3
* 5--1
*****
***
*
其它流程控制语句
· break(跳出),continue(继续)
· break语句:应用范围:选择结构和循环结构。一般应用于switch语句
· continue语句:应用于循环结构。
如果i>0 *
***
|
class Demo01 { public static void main(String[] args) { /*System.out.println(0b100);//0b开头,二进制的写法 System.out.println(0100);//八进制的写法 System.out.println(100);//十进制的写法 System.out.println(0x100);//十六进制的写法**/ //各数据类型之间的取值 /*int x = 4;//-2147483648~2147483647,占用4个字节(-2的31次方到2的31次方-1) byte b = 2;//-128~127占用1个字节(-2的7次方到2的7次方-1) short s = 30000;//-32768~32767占用2个字节(-2的15次方到2的15次方-1) long l = 4l;//-9223372036854774808~9223372036854774807,占用8个字节(-2的63次方到2的63次方-1) float f = 2.3f; //单精度 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节 double d = 21.78;//双精度 1.797693e+308~ 4.9000000e-324占用8个字节 char ch = 'a';//字符型,单引号,只能赋值一个字符。 String ss="dddddd"; boolean bo = true; //long>int>short>byte >double>float 什么时候定义变量? 当数据不确定的时候,需要对数据进行存储时。 就定义一个变量来完成存储动作 //类型转换 byte b = 3; //b是byte类型 //b = b + 2; //这句进行自动类型转换 b = (byte)(b + 2);//这句进行强制类型转换,不能写成b = (byte)b + 2;这里强制换b为byte类型 System.out.println(b); //对比区别这两条输出语句 System.out.println('a'); System.out.println('a'+1); System.out.println('a'); System.out.println('a'+1);//a的ASCII码为97,97+1=98 System.out.println((char)4); */ int a=2; //a=a+1; //int b=a++;a++相当于a=a+1;把a+1赋值给a,---计数,,,a=3.b=2把a赋值给b,a再执行a++ //int b=++a;//a=3,b=3 a+=9; System.out.println(a); System.out.println(b); } }
|