Java中的位运算】的更多相关文章

众所周知,计算机底层是二进制.而java作为一门计算机编程语言,也对二进制的位运算提供了完整的支持. 在java中,int是32位的,也就是说可以用来实现32位的位运算.方便起见,我们一般用16进制对它赋值,比如: 0011表示成16进制是 0x3, 110111表示成16进制是 0x37. 那么什么是位运算呢?位运算是将数据看做二进制,进行位级别的操作.主要有移位运算和逻辑运算 移位运算: 左移:操作符为<<,向左移动,右边的低位补0,左边高位舍弃,将二进制看做整数,左移1位就相当于乘以2.…
昨天去面试的时候做到了一道Java的位运算题目,发现有个运算符不懂:">>>",今天特地查了一下,并小结一下常见的位运算符号: ~  按位非(NOT)(一元运算) &  按位与(AND) |  按位或(OR) ^  按位异或(XOR) >>  右移 >>>  右移,左边空出的位以0填充 :无符号右移 <<  左移 &=  按位与赋值 |=  按位或赋值 ^=  按位异或赋值 >>=  右移赋值 &g…
位运算的效率是最高的,因为位位运算是直接对二进制进行操作 位运算只能应用于整型和char类型(char类型可以看做是特殊的无符号的整形) 面试题: a: 判断一个数是否是奇数 a & 1 == 1; b: 对2 ^ n 取余. a & (2^n - 1); c: 如何判断一个数是否是2^n a & (a-1) == 0: d: 两个整数之间的交换: e: 用最有效率的方式求2 * 8的值 2 << 3; a: 判断一个数是否是奇数 a & 1 == 1; /*…
通过 <<  |  & ~ 位运算,实现同时拥有多个状态 通过 << 定义数据的状态 public interface LogConstants { /** * 消耗标记 */ short COST_ASSET = 1 << 0; short COST_GOLD = 1 << 1; short COST_BINDGOLD = 1 << 2; short COST_SOPH = 1 << 3; short COST_STRSOU…
为了方便对二进制位进行操作,Java给我们提供了以下四个二进制位操作符: &    按位与 |     按位或 ^    按位异或 ~    按位取反 Java中有三个移位运算符: 左移:<<                        丢弃最高位,0补最低位:num << 1,相当于num乘以2 带符号右移:>>               符号位不变,左边补上符号位:num >> 1,相当于num除以2 无符号右移:>>>  …
基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托邦]逐个击破,深入掌握,拒绝浅尝辄止. 目录 ✍前言 ✍正文 二进制 二进制与编码 Java中的二进制 便捷的进制转换API 如何证明Long是64位的? Java中的位运算 简单运算 &:按位与 |:按位或 ~:按位非 ^:按位异或 >>:按位右移 >>>:无符号右移…
目录 JDK源码的使用 日常工作中的使用 JDK源码的使用 最近在JDK源码中闲逛,无意中看到了java.lang.reflect.Modifier这个类,这个类很简单,都是些常量定义和判断方法,于是扒了扒代码实现的含义,我们就看个isPublic方法吧: /** * Return {@code true} if the integer argument includes the * {@code public} modifier, {@code false} otherwise. * * @p…
Java中的递归运算是一种在自己的方法内部调用自己的方法 递归的设计思想是:把一个复杂的问题,分解为若干个等同的子问题,重复执行,直到之问题能够简单到直接求解,这样复杂的问题就得以解决. 递归运算有两个特点:第一,递归的出口:第二,逐步向出口逼近的递推方法 example:求1+2+3+4+5的和 public class Test { public Integer sum(int n) { if(n == 1 || n == 0) { return n; } return n + sum(n-…
/* PHP中的位运算与位移运算 ======================= 二进制Binary:0,1 逢二进1,易于电子信号的传输 原码.反码.补码 二进制最高位是符号位:0为正数,1为负数(左边是高位) 原码:二进制表示的数为原码 对于正数:原码反码补码都一样 1 ----> 0000000 00000000 00000000 00000001 对于负数: 反码:原码的符号位不变,其它位取反 补码:对负数的反码+1 -1原码: ---> 10000000 00000000 00000…
这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非(~). 下面的代码包扩了这些基本运算,还有一个两个数的交换(不用第三个数). #include<stdio.h> #include<stdlib.h> //print a int in binary void bit_print(int a) { int i; int n=16; in…