Java笔试题分类总结--位操作
来源:互联网 发布:windows微信机器人 编辑:程序博客网 时间:2024/06/05 08:36
位操作优点:
在计算机中所有数据都是以二进制的形式储存的。位运算其实就是直接对在内存中的二进制数据进行操作,因此处理数据的速度非常快。
位操作基础:
基本的位操作符有"与"、"或"、"异或"、"取反"、"左移"、"右移"这6种,它们的运算规则如下所示:
位操作注意事项:
1) 在这6种操作符中,只有"~取反"是单目操作符,其它5种都是双目操作符。2) 位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。3) 位操作符的运算优先级比较低,所以尽量使用括号来确保运算顺序。4) 位操作还有一些复合操作符,如"&="、"|="、"^="、<<="、">>="。
下边介绍一些在笔试面试中,经常遇到的问题。
1. &和&&的区别
1) &和&&都可以用作逻辑运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true, 否则,只要有一方为false,则结果为false。2) &&具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。3) &可以用作位运算,当&操作符两边的表达式不是boolean类型时,&表示按位与操作。
2. 不用中间变量交换 a,b的值(有多种方法,这里只介绍异或法)
int a=3, b=5;a ^= b;b ^= a;a ^= b;System.out.println(a); // 5System.out.println(b); // 3
3. 判断一个数是基数还是偶数
// 将数值与1做按位与操作,如果结果是1则为基数,为0则为偶数for(int i=0; i<100; i++){ if((i & 1) == 1){ System.out.println(i+"是基数"); }else{ System.out.println(i+"是偶数"); }}
4. 求一个数的绝对值
int a = 5, b = -8;int a_abs = (a ^ (a >> 31)) - (a >> 31); // 计算a的绝对值int b_abs = (b ^ (b >> 31)) - (b >> 31); // 计算b的绝对值System.out.println(a_abs);// 5System.out.println(b_abs);// 8
5. 用最有效率的方法算出4乘以17等于多少
System.out.println(17 << 2); // 右移两位,相当于乘以4
6. 判断一个数n是不是2的幂
int n = 1024;if((n & (n - 1)) == 0){ System.out.println(n + "是2的幂");}else{ System.out.println(n + "不是2的幂");}
7. 如果a大于0并小于65536,用移位法计算a乘以254的值
int a = 65530;int res = (a << 8) -(a << 1); // 移位运算的优先级比较低,需要加括号System.out.println(res); // 16644620
0 0
- Java笔试题分类总结--位操作
- Java笔试题分类总结--基本数据类型
- Java笔试题分类总结--String
- java位操作总结
- Java位操作总结
- C++ 位操作 笔试题
- java位操作符总结
- java位操作符总结
- java位操作符总结
- Java位操作全面总结
- 笔试分类总结
- Java笔试题总结
- java笔试题总结
- JAVA笔试题总结
- Java笔试题总结
- java笔试题总结
- java笔试题总结
- 二叉树java笔试操作总结
- 6.1.3 qmgr模块函数调用关系
- Android作为客户端,采用Netty与服务器通信
- android中sharedPreferences的用法
- xshell中Ctrl+S锁定屏幕
- JavaBean, EbtutyBean, POJO概念
- Java笔试题分类总结--位操作
- iOS开发出错whose view is not in the window hierarchy!的解决
- Java动态代理实现
- mazu
- DefaultHandlerExceptionResolver : Failed to convert request element: org.springframework.web.method.
- 阿里云添加二级域名
- C++ 堆排序算法实现
- 详解Spring应用作为EJB客户端调用EJB方法
- android.view.WindowManager$BadTokenException