7.4原码反码补码,位运算符
原码反码补码:
原码的弊端:
原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。“ 0 1 1 1 1 1 1 1 ”
利用原码对正数进行计算是不会有问题的。
但是如果是负数计算,结果就出错,实际运算的结果,跟我们预期的结果是相反的。
反码出现的目的:
为了解决原码不能计算负数的问题而出现的。
反码的计算规则:
负数的反码在原码的基础上,符号位不变。数值取反,0变1,1变0。正数的反码不变。
反码的弊端:
负数运算的时候,如果结果不跨0,是没有任何问题的,但是如果结果跨0,跟实际结果会有1的偏差。
补码出现的目的:
为了解决负数计算时跨0的问题而出现的。
补码的计算规则:
正数的补码不变,负数的补码在反码的基础上+1。另外补码还能多记录一个特殊的值-128,该数据在1个字节下没有原码和反码
补码的注意点:
计算机中的存储和计算都是以补码的形式进行的。
1字节为8比特位 0000 0000
基本数据类型:
byte类型的10: 1个字节 0000 1010
short类型的10: 2个字节 0000 0000 0000 1010
int类型的10: 4个字节 0000 0000 0000 0000 0000 0000 0000 1010
long类型的10: 8个字节 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1010
隐式转换即,向前补0
强制转换即,从前消0
位运算符:
& 逻辑与 0为false,1为true
| 逻辑或 0为false,1为true
<< 左移 向左移位,低位补0
>> 右移 向右移位,高位补0或1
>>> 无符号右移 向右移位,高位补0
判断和循环:
顺序结构、分支结构、循环结构
分支结构 if:
格式1:
if(关系表达式){ 关系表达式若为boolean类型
语句体; 可直接写数据名称。
}
格式2:
if(关系表达式){
语句体1;
}else{
语句体2;
}
格式3:
if(关系表达式1){ 1假执行2
语句体1; 2假执行3
}else if(关系表达式2){ …………
语句体2;
}
…
else{
语句体n+1;
}
switch循环语句:
switch(表达式){ 格式说明:
case值1; 1、表达式:将要匹配的值)取值为byte、short、int、char. DK5以后可以是枚举,DK7以后可以是String。
语句体1; 2、case后面跟的是要和表达式进行比较的值(被匹配的值)
break; 3、break: 表示中断,结束的意思,用来结束switch语句
case值2; 4、default:表示所有情况都不匹配的时候,就执行该处的内容和if语句的else相似
语句体2; 5、case后面的值只能是字面量,不能是变量
break; 6、case给出的值不允许重复
…………
default:
语句体n+1;
break;
}
1、default的位置和省略 :位置任意(默认末尾),可以省略但不建议
2、case穿透 : break不能省略不能丢
3、switch新特性
4、switch和if第三种格式各自的使用场景
化简式:
switch(表达式){
case 值1 -> { 语句体为一行时,case后面的“{}”可以省略
System. out . ptintln();
}case 值2->{
System. out. println();
}
……
default-> {
System. out. println();
}
}
练习:
本文来自博客园,作者:suN(小硕),转载请注明原文链接:https://www.cnblogs.com/liushuosbkd2003/p/17527225.html