![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
位运算
位运算在算法题中的应用
嘻嘻作者哈哈
喜欢折腾技术。寒窗苦读无人晓,一朝成名天下知。
展开
-
利用位运算求解数组中只出现一次的整数
题目:数组中的元素,只有一个数出现1次,其余的数都出现k次,找出只出现一次的元素。解题方法2.1 方法一:用数据结构hashMap,键值为数组的元素,实值为该元素出现的次数。import java.util.Arrays;import java.util.HashMap;import java.util.Map;@SuppressWarnings({"all"})public class 出现k次与出现1次 { public static void main(String[] a.原创 2021-08-25 17:21:11 · 98 阅读 · 0 评论 -
利用位运算交换一个整数的二进制数的奇偶位
一、解题思路先用32位的0101 0101 ... 0101 0101获取该整数的所有奇数位。再用32为的1010 1010 ... 1010 1010获取该整数的所有偶数位。将奇数位左移1位变成偶数位,偶数位右移1位变成奇数位;之后异或。二、代码public class 交换奇偶位 { public static void main(String[] args) { int num = 24; int res = changeBit(num);原创 2021-08-25 17:01:54 · 209 阅读 · 0 评论 -
利用位运算求解一个整数的二进制表示中1的个数
题目:求解一个整数的二进制表示中1的个数。比如6的二级制为110,则结果为2。解题方法:2.1 方法一:用1与整数的每一位做与运算,如果该位与1的结果为1则表示该位为1。方法一代码import java.util.Scanner;public class 二进制中1的个数 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc..原创 2021-08-25 16:50:07 · 213 阅读 · 0 评论 -
利用位运算找出数组中唯一成对的数
一、位运算前导知识(一)异或^定义:不同为1,可以理解为不进位的加法, 1+1=0, 0+0=0,1+0=1性质:交换律结合律对于任何数x,都有x^x=0,x^0=x自反性A^B^B=A^0=A,连续和同一个因子做异或运算,最终结果为自己应用:判断奇偶数交换两个整数变量的值获取二进制位是1还是0不用判断语句,求整数的绝对值二、找出唯一成对的数题目:将1-1000的数字存放在含1001个元素的数组中,只有唯一的一个元素值重复,找出该数。不使用额外的辅助空间,且数组原创 2021-08-25 14:36:26 · 127 阅读 · 0 评论