300的二进制
300/2=150....0
150/2=75......0
75/2=37.......1
37/2=18........1
18/2=9............0
9/2=4.............1
4/2=2............0
2/2=1.............0
1/2=0.............1
00000000 00000000 00000001 00101100
补码:01011100
原码:01011100
8+4+32=44
++:自加1 当++在前的时候,先自加1,再做赋值操作,当++在后的时候,先做赋值操作,再做自加1 --:自减1 当--在前的时候,先自减1,再做赋值操作,当--在后的时候,先做赋值操作,再做自减1
运算: 对常量和变量进行操作的过程称为运算。 运算符: 对常量和变量进行操作的符号称为运算符 操作数: 参与运算的数据 表达式: 用运算符把常量或者变量连接起来符号并且符合java语法的式子就可以称为表达式。 不同运算符连接的式子体现的是不同类型的表达式。 算术运算符: +,-,*,/,%,++,--
short s=1, s = s+1; short s=1, s += 1; 上面两个代码有没有问题,如果有,那里有问题 第一个有问题,因为变量参与运算,首先会提升数据类型,然后做运算。所以 s = s+1;s会提升到int类型然后再做加法运算,最终的 结果是int类型,所以拿short类型接收会报错,所以要想成功赋值,就得强制类型转换。 第二个代码没有问题,是因为内部自动包含了强制类型转换,s+=1 ===> s = (s的数据类型)(s+1)
关系运算符: ==,!=,>,<,>=,<= 注意事项: 1、关系运算符的表达式的结果是一个boolean类型,要么是true,要么是false 2、==不能少写,一个=是赋值运算符,==才是关系运算符 3、赋值的时候要注意类型问题,关系运算符表达式的结果是boolean类型,所以接收的时候只能是boolean类型的变量接收
三目运算符:又称之为三元运算符 格式:(关系表达式)?表达式1:表达式2; 如果关系表达式的结果为true,运算后的结果是表达式1; 如果关系表达式的结果为false,运算后的结果是表达式2; 注意事项: 1、三目运算符表达式的结果数据类型由三目运算符表达式1和表达式2中最大的数据类型决定的。 2、关系表达式一定只能是boolean类型
&&: 短路与,结果和单个与结果一样,有false则false,但是执行的东西不一样, 当&&左边的表达式结果为false的时候,结果是false,右边不执行 ||: 短路或,结果和单个或结果一样,有true则true,但是执行的东西不一样, 当||左边是true的时候,右边不执行,结果是true. 逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6
逻辑运算符: &,|,^,!,&&,|| 逻辑运算符的两边放的是boolean类型的值,计算的结果也是一个boolean类型的值 &: 参与运算的时候,两边有false,则false,两边都做运算 |: 参与运算的时候,两边有true,则true,两边都做运算 ^: 参与运算的时候,相同为false,不同为true,两边都做运算 !: 将true变成false,false变成true
由于数据在计算机中参与运算的都是补码,而想要知道补码,就得知道反码,原码,就得求出二进制
3的二进制:00000011
4的二进制:00000100
又由于3和4都是正数 3的补码:00000011
4的补码:00000100
& 运算:有0则0 00000011 & 00000100 --------------- 00000000 结果是 : 0
| 运算:有1则1 00000011 | 00000100 -------------- 00000111 结果是:7
^ 运算:相同则0,不同则1 00000011 ^ 00000100 -------------- 00000111 结果是:7
~ 运算:1变成0,0变成1 00000011 ~ ------------- 补码: 11111100
已知补码求原码: 反码: 11111011
原码: 10000100
结果是:-4