算法--位运算
wangdongli_1993
这个作者很懒,什么都没留下…
展开
-
二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。回顾知识点(原码,反码,补码)数字在计算机中都是二进制来存在,以字节为单位,一个字节是8位,这个题目是int类型就是32位原码:最高位是符号位,剩下的表示机器数的值+1:0000 0001-1:1000 0001反码:对于整数,反码同原码,对于负数符号位不变,剩下的位取反+1:0000 0001...原创 2018-07-19 22:07:17 · 1387 阅读 · 0 评论 -
数组中只出现一次的数字(异或)
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。(1)可以使用hashmap分拣存储(2)利用异或的位运算 一个数与自身异或是0,一个数与0异或是本身 当数组中只有两个数出现一次,其余数都出现偶数次,那么数组中所有数字异或的结果相当于这两个数字异或的结果 两个数异或的结果中为1的位,说明这两个数在这个位不同 根据在这个位是...原创 2018-08-09 15:28:14 · 824 阅读 · 0 评论 -
实现幂次运算-----(移位)
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。首先Math类中提供实现方法 Math.pow(base,exponent) 最普通的解决办法就是按照幂次的定义O(n) public double Power(double base, int exponent) { double res=1; if...原创 2018-07-19 23:03:30 · 1600 阅读 · 0 评论 -
不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。public class Solution { public int Add(int num1,int num2) { while(num2!=0){ int temp=num1^num2; num2=(num1&num2)...原创 2018-08-26 17:48:36 · 159 阅读 · 0 评论