位运算基础【位操作】

对于整数有一种重要的位运算操作。注意:浮点数不适用于位运算。位运算符最适用于对整型数值进行运算。
位运算符运算时,先要将一个整型数值转换为以二进制表示的整型数值再按位进行计算。位运算符可分为二种类型:位逻辑运算符(有4个)和移位运算符(有3个),详见下表说明:
位运算符功能说明
一个比特位只有二种可能的取值:0或1。
位逻辑运算是对比特位的运算,其运算规则如下图,其中x和y分别表示比特位变量,其值是0或1。例如比特位x=0,则按位取反~x=1;如x=1,y=0,则按位异或x^y = 1^0 = 1;如x=1,y=0,则按位与x&y=1&0=0,以此类推。
位运算规则
位逻辑运算,先要将一个整型数值转换成以二进制表示的整型数值,然后再按位进行计算。下面是109&11和109^11两个位逻辑运算的示例:
位运算示例
Java语言提供了3个移位运算符: <<(左移运算符)、>>(右移运算符)和>>>(无符号右移运算符)。

  1. 左移运算符"<<"
    用来将一个整数的二进制位序列左移若干位。移出的高位丢弃,右边添0。

  2. 右移运算符">>"
    用来将一个整数的二进制位序列右移若干位。移出的低位丢弃。若为正数,左边高位补0;若为负数,左边高位补1。

  3. 无符号右移运算符">>>"
    也是将一个整数的二进制位序列右移若干位。它与右移运算符">>"的区别是,不论正数还是负数左边一律补0。

    整数的移位与乘除操作的关系:
    整数移位运算时,如果没有发生有效位的数字丢失,左移n位相当于乘以2的n次方,右移n位相当于除以2的n次方。
    例如,整数11的二进制序列为:
    00000000 00000000 00000000 00001011
    若执行11<<3,结果为:
    0000000 00000000 00000000 001011000
    11左移3位,相当于11乘8(2的3次方),最后结果是88

下面给出一个整数的移位与乘除操作的例程:

public class 移位与乘除操作 {
	public static void main(String[] args) {
		int NUM =  2679;
		int Nb = 0B1000;  //整数8的二进制表示
		int n1,n2;
		n1 = NUM << 3; //左移3位。
		n2 = NUM * Nb; //相当于乘以2的3次方
		System.out.println("n1 = " + n1);
		System.out.println("NUM左移3位与乘以2的3次方比较:" + (n1==n2));
		int n21,n22;
		n21 = NUM >> 3; //右移3位。
		n22 = NUM / Nb; //相当于除以2的3次方
		System.out.println("n21 = " + n21);
		System.out.println("NUM右移3位与除以2的3次方比较:" + (n21==n22));
	}
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值