Java位运算总结-leetcode题目
按位操作符只能用于整数基本数据类型中的单个bit中,操作符对应表格:
| Operator | Description |
| & | 按位与(12345&1=1,可用于判断整数的奇偶性) |
| | | 按位或 |
| ^ | 异或(同假异真) |
| ~ | 非(一元操作符) |
| &=,|=,^= | 合并运算和赋值 |
| <<N | 左移N位,低位补0 |
| >>N | 右移N位,(正数:高位补0,负数高位补1) |
| >>>N | 无符号右移(无论正负数,高位皆补0) |
| <<=,>>=,>>>= | 合并运算和赋值(移动相应位数再赋值给左边变量) |
Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.
值得注意的是我们要将传入的int n作为无符号整数看待,但是在java中int是有符号的,我想到的方法就是利用上面的>>>无符号移位操作,代码如下:
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int num = 0;
do{
if((n & 1) == 1) num++;
}while((n>>>=1) > 0);
return num;
}
public static void main(String[] args){
System.out.println((new Solution()).hammingWeight(11));
}
}
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
二进制的倒置可以用移位来进行,增加运算效率
public int reverseBits(int n) {
int rs = 0;
for (int i = 0; i < 32; i++) {
rs = (rs << 1) + (n & 1);
n >>= 1;
}
return rs;
}
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
十进制的倒置同样值得注意的就是倒置以后溢出的问题,我采用的方法就是函数内利用Long类型来进行计算,并在转换成int前与intMax进行比较,如果溢出返回0(题目要求)
public int reverse(int x) {
long l = new Long(x);
Long tmp = 0L;
while (l != 0) {
tmp = tmp * 10 + l % 10L;
l /= 10;
}
if (x > 0 && tmp > 2147483647L || x < 0 && tmp < -2147483648)
return 0;
return tmp.intValue();
}
想到了新的解法再更新
Java位运算总结-leetcode题目的更多相关文章
- Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range
在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...
- Java位运算总结:位运算用途广泛《转》
前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...
- Java位运算原理及使用讲解
前言日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1.可能的做法是使用三木运算符,判断原始值 ...
- (转)java位运算
转自:http://aijuans.iteye.com/blog/1850655 Java 位运算(移位.位与.或.异或.非) public class Test { public static ...
- Java位运算总结:位运算用途广泛
前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...
- Java 位运算超全面总结
1.原码.反码.补码 关于原码.反码.补码的相关知识作者不打算在这里长篇大论,相关知识已有别的大佬总结很好了,还请老铁自行 Google,不过有篇知乎回答是作者学编程以来见过对相关知识最通俗易懂,生动 ...
- 我们必须要了解的Java位运算(不仅限于Java)
本文原创地址为 https://www.cnblogs.com/zh94/p/16195373.html 原创声明:作者:陈咬金. 博客地址:https://www.cnblogs.com/zh94/ ...
- leetcode:single-number-ii(Java位运算)
题目 Given an array of integers, every element appears three times except for one. Find that single on ...
- Java位运算经典实例
一 源码.反码.补码 正数的源码.反码.补码相同,例如5: 5的源码:101 5的反码:101 5的补码:101 负数的源码.反码.补 ...
随机推荐
- PHP定界符使用技巧
为什么要使用定界符 : 因为PHP是一个Web编程语言,在编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,如果用传统的输出方法——按字符串输出的话,肯定要有大量的转 ...
- Odoo 二次开发教程(二)-模块的基础构建
注:本篇及后续均以8.0为基础. 一. Odoo模块的构成 __init__.py 文件是python包导入所必须的文件,内容可以为空,通常情况下我们用来导入自己写的py文件. __openerp__ ...
- Tree菜单 复选框选中控制DEMO
java 对应实体类属定义 public class AccoSysmanResource{ /** * 资源类型 */ private Integer resou ...
- windows上面捕获声卡数据
转自:http://shanewfx.github.io/blog/2013/08/14/caprure-audio-on-windows/ 前一段时间接到一个任务,需要采集到声卡的输出信号,以便与麦 ...
- 关于IoCallDriver使用的疑惑
#pragma PAGEDCODE NTSTATUS HelloDDKRead(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp) { KdPrint(("Dr ...
- AWS 免费套餐
AWS 免费套餐 转载自:https://aws.amazon.com/cn/free/?sc_channel=PS&sc_campaign=acquisition_CN&sc_pub ...
- Javascript设置对象属性为"只读"
有时为了保护某些属性,让其无法被更改,我们会把他们设置为常量. 在某些语言里面,也许会用const来实现这样的功能.本文讲述如何在Javascript中实现这样的功能. 方法一: var myObje ...
- spring事务管理器设计思想(二)
上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务.这是最常见 ...
- 在Windows中安装Memcached
Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度. Memcached最开始是作为 ...
- [译]如何防止elasticsearch的脑裂问题
本文翻译自blog.trifork.com的博文 地址是http://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem- ...