10G ORACLE RAC 搭建实战之Clusterware安装、数据库创建
2015-11-26 16:57
465 查看
public class TestBit { /** * @param args * 二进制的负数表示法:如果是32位的机器,则对原数取反+1 */ public static void main(String[] args) { // TODO Auto-generated method stub int n = 30; System.out.println(Integer.toBinaryString(n));// 11110 System.out.println(Integer.toBinaryString(-n));// 11111111111111111111111111100010 int s = n & -n; System.out.println(Integer.toBinaryString(s));// 10 n = n - (n & -n); System.out.println(s);// 2 } }
引用
文中2'k代表2的k次方
1 除以2的k次幂可以用位运算:
n/2'k == n>>k
2 对2的k次幂取余数可以用位运算:
n%2'k == n & ((1<<k)-1)
比如 100%32
100的二进制为 1100100
((1<<5)-1)等于31为 0011111
两个数相与即得 100,故
100%32 = 4
3 对于整数n,从低位开始,把它的第k位(0<=k<=31)置为1的操作为:
n = n | (1<<k)
4 对于整数n,从低位开始,把它的第k位(0<=k<=31)置为0的操作为:
n = n & ~(1<<k)
5 对于整数n,从低位开始,测试它的第k位(0<=k<=31)是否为1,若为1,返回一个大于0的数,否则返回0
return n & (1<<k)
6 对于整数n,判断它是奇数还是偶数
若n & 1大于0,则n是奇数,否则n是偶数
7 对于整数n,若n是奇数,则把n减1变成偶数,若n是偶数,则把n加1变成奇数
n = n ^ 1
8 对于奇数n,有如下性质
(n-1) ^ n ==1
9 最大的int
01 1111111111 1111111111 1111111111
MAX_INT = ~(1<<31)
10 最小的int
10 0000000000 0000000000 0000000000
MIN_INT = (1<<31)
11 把最低位的1变为0
比如: 111000 ---> 110000
n = n - (n&-n)
12 判断两个整数数是否同号
#define MASK 0x80000000
flag = (x & MASK) ^ (y & MASK)
如果flag为0,说明不同号,否则同号
13 交换两个值,不用临时变量
想将a和b的值互换,可以用以下赋值语句实现:
a=a∧b;
b=b∧a;
a=a∧b;
相关文章推荐
- Oracle的自增序列、触发器、序列
- 10G ORACLE RAC 搭建实战之环境配置
- oracle之FUNCTION拙见
- 10G ORACLE RAC 搭建实战之LINUX LVM划分
- Oracle存储过程
- oracle rman全备恢复实践
- Oracle Cursor游标的使用
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)1
- 四年前的老文章【Oracle, the Open Source Killer.】
- Oracle中Function学习2
- Oracle Dataguard部署
- oracle 一行拆分多行
- Oracle 10g console控制台报错: java.lang.Exception: Exception in sending Request :: null
- java连接Oracle数据库详细代码,jdbc
- oracle function学习1
- 【ojdbc14.jar】由于Oracle驱动ojdbc14.jar导致千万富翁破产之始末
- ORACLE11g:No Dialect mapping for JDBC type: -9,2011解决方案
- SQL SERVER导入数据到ORACLE的方法总结
- mysql和oracle的区别(功能性能、选择、使用它们时的sql等对比)
- 友勤签约中信重工Oracle P6项目管理软件及技术服务项目