1、写出将两个变量的值互换的程序。(不借助第三个变量的情况)
public class Test1{
public static void main(String[] args){
int a = 10;
int b = 15;
a = a + b;
b = a - b;
a = a - b;
System.out.println("a = " + a);//15
System.out.println("b = " + b); //10
}
}
2、有如下代码片段:
short s = 1; s = s + 1;
产生错误的原因是什么????
编译不通过,损失精度。s是short类型,跟int类型的 1 进行运算后,结果自动转换成int类
型,但是左边却是short类型,两边类型不匹配。编译不通过。
但是 s+=1; 这个就可以编译通过 正常运行,为什么?
因为 += 这个运算符在编译解析时候 实际上是这样的 s=(short)(s+1),自动加上强转,这
样两边类型一致,可以编译通过。
3、使用二进制模拟25+37的运算过程,并检验。
(25)10=(11001)2 + (37)10=(100101)2 = (111110)2 = (62)10
4、总结十进制转换为二进制以及其他进制的步骤。
十进制--->二进制
把十进制数不断向下除以2,记录每次得到的余数,然后余数逆序(倒过来写)就是二进制数
十进制转8,16进制也类似这样方法。
二进制--->十进制呢?
按权展开求和 如 11000011 = 2^7 + 2^6 + 2^1 + 2^0 = 195
二进制--->八进制呢?
将 二进制的每三位 按权展开求和得到 一位八进制 (位数不够在前面补0)
如 011 000 011 每三位算一下得到八进制 303 -->十进制呢?
按权(权为8)展开求和 3 * 8^2 + 0 * 8^1 + 3 * 8^0 = 195
二进制--->十六进制呢?
将二进制的 每四位 按权展开求和得到一位十六进制
如1100 0011 每四位算一下得到12和3 但是十六进制中9之后的是用ABCDEF来表示
所以结果为C3 --->十进制呢? 按权(权为16)展开 12 * 16^1 + 3 * 16^0 = 195