在Java中,位运算符有很多,例如与(&).非(~).或(|).异或(^).移位(<<和>>)等.这些运算符在日常编码中很少会用到. 在下面的一个例子中,会用到位掩码(BitMask),其中包含大量的位运算.不只是在Java中,其他编写语言中也是可以使用的. 例如,在一个系统中,用户一般有查询(Select).新增(Insert).修改(Update).删除(Selete)四种权限,四种权限有多种组合方式,也就是有16中不同的权限状态(2的4次方). 一般情况下会想到用四个…
  java boolean 值在内存中占几位?    <Java虚拟机规范>中这样描述:虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持.在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位.     这样我们就得出结论:一个boolean值占用内存4个字节的空间:但一个…
1.位逻辑非运算 ~ 位逻辑非运算是单目的,只有一个运算对象.位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1:如果某一位等于1,就将其转变为0. 比如,对二进制的10010001进行位逻辑非运算,结果等于01101110,用十进制表示就是: ~145等于110:对二进制的01010101进行位逻辑非运算,结果等于10101010.用十进制表示就是~85等于176.   2.位逻辑与运算 & 位逻辑与运算将两个运算对象按位进行与运算.与运算的规则:1与1等于1,1与…
题目描述: 给定一个包含n个整数的数组,除了一个数出现一次外所有的整数均出现三次,找出这个只出现一次的整数. 题目来源: http://oj.leetcode.com/problems/single-number-ii/ 题目分析: 对于除出现一次之外的所有的整数,其二进制表示中每一位1出现的次数是3的整数倍,将所有这些1清零,剩下的就是最终的数. 用ones记录到当前计算的变量为止,二进制1出现“1次”(mod 3 之后的 1)的数位.用twos记录到当前计算的变量为止,二进制1出现“2次”(…
异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧0=0,0∧1=1,1∧1=0. 性质: (1).与1异或会翻转 (2).与0异或保持不变 (3).一个数异或它本身等于0 (4).每一位的结果只与该位有关. 应用: (1).使特定位翻转 假设有01110101,现在想让第一位,第三位翻转(最低位为第一位),只要异或00000101,得到01110000. (2).交换两个值,不用临时变量 假如a=3,b=4.想将a和b的值互换,可以用…
一.补码 所谓补码就是所有位取反: 例如3的二进制表示是:00000011,那么3的补码就是11111100: 对于-3的二进制表示就是3的补码+1:11111101: 所以二进制的负数就是该数的补码加1. 随便来一个二进制数来算算它是多少:11111010 首位是1,那么他是个负数,负几呢?数值->补码->+1=负数: 那么这个数就是减一再补码:11111010-1=11111001,再补码,00000110=>6,所以之前的负数就是-6 二.按位非(~) 按位非就是补码的运算过程,数…
改写服务器中的监听文件(listener.ora和tnsnames.ora) “ora-12541:TNS:无监听程序”问题的解决 ora-12541:TNS:无监听程序,出现这种错误的时候,可以尝试以下步骤的解决方法: 1. 在控制面板中查看相关的oracle服务是否已是启动状态: 2. 启动sql/plus,看是否能顺利操作: 3. 在安装目录下找到tnsnames.ora文件,修改localhost值为本机的IP地址,如下所示: 这个文件存在于下面的路径中:“盘名:\oracle\prod…
var arr:Array = [0,1,2,4,8,16] var gate:int = 0; gate |= arr[1] gate |= arr[2] gate |= arr[3] trace(gate) trace(Boolean(gate&1)) trace(Boolean(gate&4))…
在日常的Java开发中,位运算使用的不多,使用的更多的是算数运算(+.-.*./.%).关系运算(<.>.<=.>=.==.!=)和逻辑运算(&&.||.!),所以相对来说对位运算不是那么熟悉,本文将以Java的位运算来详细介绍下位运算及其应用. 1. 位运算起源 位运算起源于C语言的低级操作,Java的设计初衷是嵌入到电视机顶盒内,所以这种低级操作方式被保留下来.所谓的低级操作,是因为位运算的操作对象是二进制位,但是这种低级操作对计算机而言是非常简单直接,友好高效…
点击进入_很多其它_Java千百问 二进制是如何做位运算的 程序中的全部数在计算机内存中都是以二进制的形式储存的.位运算说白了,就是直接对整数在内存中的二进制位进行操作. 其它运算符看这里:java种的运算符都有哪些 大部分运算流程都是先将整数转换为二进制.然后进行对应二进制操作.常见的操作有例如以下几种:以下我们具体说明,运算符的优先级看这里:java运算符的优先级是如何的 1.按位与 and两个二进制数进行按位与操作:同样位的两个数字都为1.则为1:若有一个不为1,则为0. 比如:00101…