进制转换
其他进制转十进制
公式:系数 * 基数的权次幂相加 (系数指每个数字,基数指的是多少进制,权指的是从右到左从0开始,次幂就是乘方)
例如:计算 0x100 的十进制值.
0x100 = 1*16^2 + 0 * 16^1 + 0 * 16^0
= 16*16
= 256
十进制转其他进制
公式:除基(基数,也就是要转的进制)倒取余(余数)
例如:计算 60 的二进制.
结果为:0b111100 或者 0B111100
原码、反码、补码
原码
扫描二维码关注公众号,回复:
10464076 查看本文章
总共 8 位。最高位表示该数是正数还是负数,正数最高位用 0 表示,负数最高位用 1 表示.
比如:0b10110100
反码
正数的反码和原码是一样的。所以原码是正数的反码不用计算,原码是负数的反码计算规则是:
- 保持最高位不变
- 0 -> 1,1->0
补码
要求补码,先要求原码的反码。补码的计算规则:
- 在反码基础上加 1
- 如果有多余8位的,直接砍掉
- 最高位根据进位变化
已知补码,求原码:
- 根据补码 -1 求出反码,对反码进行取反就是原码
逻辑运算符、位运算符
&& 与 & 的区别
- 二者具有相同的结果
- && 具有短路效果(如果左边为 false,那么右边就会不执行),& 则是两边都会执行
|| 与 | 的区别
- 二者具有相同的结果
- 前者具有短路效果(如果左边为 true,则右边不执行),| 是两边都会执行
|、&、^、~用法:
- |:有 1 则 1
- &:有 0 则 0
- ^:相同则 0,不同则1
- ~:安位取反
位异或运算符特点
一个数据对另一个数据位异或两次,结果还是该数本身
典型示例:交换两个整数的值,无需借助第三个变量。
解法一(借助第三方变量,开发中推荐使用)
int x = 5; int y = 55; int temp = x; x = y; y = temp; System.out.println("x= "+x+" y= "+y);
解法二(两个整形相加,弊端就是有可能相加之和超出 int 最大值)
int x = 5; int y = 55; x = x + y; y = x - y; x = x - y; System.out.println("x= "+x+" y= "+y);
解法三(异或运算符,面试考题)
int x = 5; int y = 55; x = x ^ y; // x = 5 ^ 55 y = x ^ y; x = x ^ y; System.out.println("x= "+x+" y= "+y);
<<、>> 、>>>
特点:
- << :左移几位,就是乘以 2 的几次幂
>>
:右移几位,就是除以 2 的几次幂>>>
:无符号右移,无论最高位是 0 还是 1,左边补齐 0
面试题:计算 2 * 8 的结果,要求效率最高
2 << 3
流程控制语句
continue 关键词
作用:终止本次循环,继续下次循环。
特点:当执行到 continue 语句时,后面的语句不会在本次执行。
标号
作用:指定循环跳到某处。
使用场景:一般用在多层循环中。循序执行的语句也可以应用。
面试题:下面程序运行是否会出错?
public static void main(String[] args){
System.out.println("您好,欢迎您能来参加我司的面试");
http://blog.csdn.net/wufeng55
System.out.println("请您告诉我,我能被顺利执行吗?");
}
解答:
这里的 http:
是下面输出语句的标号而已,而其后面的语句是单行注释。所以,这段代码编译运行没有错,可以正常输出。
方法重载
重载:方法名相同,参数列表不同。与方法返回值无关。
参数列表不同的表现形式包括:
- 参数的顺序
- 参数的类型
- 参数的个数