算法-位运算
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
剑指offer-40-数组中只出现一次的数字-java
题目及测试package sword040;/*一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。*/public class main { public static void main(String[] args) { int[][] testTable = {{1,2},{1,1,2,2,5,6,7,7},{1,2,3,3},{1,1,2,3}}; for (int[] ito : testTable) { test(ito);原创 2020-12-31 20:42:50 · 113 阅读 · 0 评论 -
剑指offer-10-二进制中1的个数-java
题目及测试package sword010;/* 问题描述: 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1 因此如果输入9,该函数输出2;*/public class main { public static void main(String[] args) { int[] testTable = {1023,-2561,1024,-2147483648,-2147483647}; for (int i=0;i<te原创 2020-11-06 09:52:39 · 109 阅读 · 0 评论 -
java 求int平均值防止溢出
方法1start + (end - start) / 2方法2int mid = (start + end) >>> 1它通过移位实现了除以 2,但。。。这样难道不会导致溢出吗?首先大家可以补一下 补码 的知识。其实问题的关键就是这里了>>> ,我们知道还有一种右移是>>。区别在于>>为有符号右移,右移以后最...原创 2019-05-27 17:48:09 · 1077 阅读 · 1 评论 -
位运算总结-java版
目录位运算简介正负数在二进制中的显示机器数和真值机器数真值原码,反码和补码原码反码补码为什么要有原码,反码和补码补码与原码互相转换原码到补码补码到原码java中的数字的底层结构java位运算符按位与(&)按位或(|)按位异或(^)与、或、亦或 与负数按位取反(~)按位左移(<< )右移(&...原创 2019-05-13 16:14:59 · 440 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)总结-java版
目录为什么要有布隆过滤器简介基本原理是否支持删除误判率哈希函数个数和布隆过滤器长度复杂度空间时间优缺点优点缺点BloomFilter和BItMap的区别应用java实现Hash工具类BitSet类BloomFilter测试为什么要有布隆过滤器在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合...原创 2019-05-07 14:59:52 · 2370 阅读 · 0 评论 -
leetcode-190-颠倒二进制位(reverse bits)-java
题目及测试package pid190;/*颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596输出: 964176192解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 001110010111100000101001010...原创 2018-10-22 11:18:02 · 924 阅读 · 0 评论 -
java 二进制与负数互相转化
负数表示首先我们要对原码、反码和补码有个了解:1、所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。2、反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。原码10010= 反码11101 (10010,1为符号码,故为负)(11101) 二进制= -13 十进制3、补码表示法规定:正数的补码与其原码相同;...原创 2018-10-22 10:39:48 · 7451 阅读 · 0 评论 -
leetcode-461-汉明距离(hamming distance)-java
题目及测试package pid461;/* 汉明距离两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指...原创 2018-10-19 09:31:41 · 363 阅读 · 0 评论 -
leetcode-位运算
leetcode-191-位1的个数(number of one bits)-java与1与运算,为1为奇数,为0位偶数之后n&amp;gt;&amp;gt;2,相当于/2将&amp;gt;&amp;gt;改为&amp;gt;&amp;gt;&amp;gt;因为&amp;gt;&amp;gt;如果全为1(也就是-1)的话0不会填位,而&a原创 2018-10-18 10:00:46 · 380 阅读 · 0 评论 -
leetcode-191-位1的个数(number of one bits)-java
题目及测试package pid191;/*位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128输出: 1解释: 整数 128 的二进制表示为 0...原创 2018-10-18 09:58:49 · 536 阅读 · 0 评论