•位操作符
所有的按位操作符的操作数都会被转成补码形式的有符号的32位整数。
运算符 | 用法 | 描述 |
按位与(AND) | a & b | 对于每一个比特位,只有两个操作数相应的比特位都是1时,结果才为1,否则为0。 |
按位或(OR) | a | b | 对于每一个比特位,当两个操作数相应的比特位至少有一个1时,结果为1,否则为0。 |
按位异或(XOR) | a ^ b | 对于每一个比特位,当两个操作数相应的比特位有且只有一个1时,结果为1,否则为0。 |
按位非(NOT) | ~a | 反转操作符的比特位,即变成1,1变成0。 |
左移(left shift) | a<<b | 将a的二进制形式向左移b(<32)位比特位,右边用0填充。 |
有符号右移 | a>>b | 将a的二进制形式向右移b(<32)位比特位,丢弃被移出的位。 |
无符号右移 | a>>>b | 将a的二进制形式向右移b(<32)位比特位,丢弃被移出的位,并使用0在左侧填充 |
有符号右移:拷贝最左侧的位以填充左侧
无符号右移:左侧用0填充
对任一数值 x 进行按位非操作的结果为 -(x + 1)。例如,~5 结果为 -6。
在数字 x 上左移 y 比特得到 x * 2y.
•条件运算符
条件运算符也叫三元运算符
语法:条件表达式?语句1:语句2;
执行的流程:
条件运算符在执行时,首先对条件表达式进行求值
如果该值为true,则执行语句1,并返回执行结果
如果该值为false,则执行语句2,并执行返回结果
如上图所示:a显然不大于3,所以执行语句2,并执行返回结果 bbbb
•运算符的优先级
•流程控制
流程控制语句
--程序都是自上向下的顺序执行的 ,通过流程控制语句可以改变程序执行的顺序,或者反复的执行某一段的程序。
--分类:1条件判断语句
2条件分支语句
3循环语句
◊分支语句
-->条件判断语句(if)
一般书写if分支的时候,我们的控制条件都不是互斥的,我们应该将小范围的条件写在前面
练习一:
练习二:
◊条件分支语句
练习一:
练习二:
◊循环语句
通过循环语句可以反复执行某些语句多次
循环语句组成的四个部分:
1:初始化表达式
2:循环条件表达式
3:循环体部分
4:迭代部分(更新表达式)
◊for循环
语法:
for(①初始化表达式 ; ②循环条件表达式 ; ④更新表达式){
③循环体
}
练习一:
练习二:
练习三:
◊while循环
- 语法:
①初始化表达式
while(②循环条件表达式){
③循环体
④更新表达式
}
- 执行流程:
while语句在执行时,会先对条件表达式进行求值判断,
如果判断结果为false,则终止循环
如果判断结果为true,则执行循环体
循环体执行完毕,继续对条件表达式进行求值判断,依此类推
练习:
◊do....while循环
- 语法:
①初始化表达式
do{
③循环体
④更新表达式
}while(②循环条件表达式)
- 执行流程
do...while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断,
如果判断判断结果为false,则终止循环。
如果判断结果为true,则继续执行循环体,依此类推
- 和while的区别:
while:先判断后执行
do...while: 先执行后判断
do...while可以确保循环体至少执行一次。
练习:
◊死循环
- 语法:
while(true){
}
for(;;){
}
练习:
◊嵌套循环
打印*****:
打印:*****
****
***
**
*
打印:*
**
***
****
*****