`
greemranqq
  • 浏览: 967956 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JAVA的位操作符

阅读更多

最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。

 

1.按位操作符 :

   按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。

   与(&)运算:

   1&1 = 1, 1&0 = 0, 0&0  = 0; 这里相当于做乘法,也可以认为男女双方都有感觉才有结果。

   或(|)运算:

   1 | 1 = 1, 1|0=1, 0|0 = 0;这表示条件宽松,只有有一方有感觉,都可以有结果。

   异或(^)运算

   1 ^ 1 = 0; 1^0 = 1;0 ^ 0 = 0; 这表示两个冤家,非要不同,经过磨难才能有结果。

    上面都是二元操作符,而 非(~) ,是一元操作符,也叫取反操作。连符号位 也会取反哦,

    

    

    注意:上面的二元操作符可以和 “=”连用,比如:&=,|=。 一元非不行

 

2.移位操作符

   这也是操作二进制的。

   >> <<: 带符号的左右移位,也就是说移动之后,高低位 补 0 还是1 根据 正负数判定。1 负数,0正数

   >> >:  无符号右移,无论正负数,前面(高位)都补0

   注意:所有的位移运算都会先转换成 int 到二进制,再进行操作。先看移动过程

 

   

	public static void main(String[] args) {
	int a = 2;
	// 原始数据
	System.out.println(Integer.toBinaryString(a));
	//00000000000000000000000000000010  前面的0,会被省略
	System.out.println(Integer.toBinaryString(-a));
	//11111111111111111111111111111110
	
	// 带符号的 右移动,这里用负数,方便观察
	
	System.out.println(Integer.toBinaryString(-a>>1));
	//原始:11111111111111111111111111111110
	//现在:11111111111111111111111111111111 比较,右移1位,前面自动加符号1
	
	System.out.println(Integer.toBinaryString(-a<<1));
	//原始:11111111111111111111111111111110
	//现在:11111111111111111111111111111100 比较,左移1位,后面默认加0 
	
	// 看无符号 移动,也就是不管前面符号位
	System.out.println(Integer.toBinaryString(-a>>>1));
	//原始:11111111111111111111111111111110
	//现在:1111111111111111111111111111111   比较,发现少了一位,因为无符号,默认前面补0
	
	// 这个无符号 ,不能左移动 - -!
	//System.out.println(Integer.toBinaryString(-a<<<1));
	}

 

     下面看看 特殊的移动。

    

byte b = 127;
	System.out.println("原始:"+Integer.toBinaryString(b));
	//原始:1111111
	//现在:11111110  这里移动了就是254了,已经默认转换成int 了。
	System.out.println(b<<1);
	// 这里如果强行转byte,会得到 -2.
	// int 和 byte 的转换,超过127,128 就会 成 -128,129 就成 -127.这样循环。
	
	
	int c =1;
	// 因为int 只有32位,到31位的时候,就成负数了。
	// 如果继续移动,就开始循环了。
	for(int i =1;i<34;i++){
		System.out.println(i+" : "+Integer.toBinaryString(c<<i));
		System.out.println(c<<i);
		}
	}

 

  这里就是一些简单的位移运算 方式了

   

0
2
分享到:
评论

相关推荐

    java 按位操作符的使用

    在Java中,按位操作符用于对整数进行位级别的操作 按位与(&)操作符 按位或(|)操作符 按位异或(^)操作符 按位取反(~)操作符 左移()操作符 右移(&gt;&gt;)操作符

    java 移位操作符的使用

    Java中的移位操作符用于对二进制数进行左移()、右移(&gt;&gt;)和无符号右移(&gt;&gt;&gt;)操作。 左移()操作符:将一个数的所有位向左移动指定的位数,右侧空出的位用0填充。 右移(&gt;&gt;)操作符:将一个数的所有位向右移动...

    Java操作符的优先级和结合性

    Java操作符的优先级和结合性,对java的操作符的优先级和结合性做了详细的说明

    java 三元操作符的使用

    在Java中,三元操作符是一种简洁的条件表达式,用于在两个值之间进行选择。

    java 关系操作符的使用

    在 Java 中,关系操作符用于判断两个值之间的关系,并返回一个布尔值(true 或 false)。

    java操作符

    表达式中有一个操作元是long型,则结果是long型的问题总结; 应该调用String的equals()方法,而不用“==”操作符的注意; java虚拟机对变量初始化为默认值。

    Java基础知识之数据类型和操作符

    Java是一种强类型语言,这意味着在Java中,每个变量都必须先声明其数据类型,然后才能使用。Java的数据类型可以分为两类:基本... :)和位操作符(&、|、^、~、、&gt;&gt;)。使用这些操作符时,需要注意它们的优先级和结合性

    java 逻辑操作符的使用

    在Java中,有三种逻辑操作符用于处理布尔值(boolean):与(&&)、或(||)和非(!)。

    java的应用领域 操作符

    java技术究竟应用于那些领域呢?让我们通过这些知识来了解一下

    Java语言中的操作符及操作符的优先级[借鉴].pdf

    Java语言中的操作符及操作符的优先级[借鉴].pdf

    详解Java的按位操作符

    Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。下面通过本文给大家分享Java的按位操作符,感兴趣的朋友一起看看吧

    Java操作符总结-动力节点共20页.pdf.zip

    Java操作符总结__动力节点共20页.pdf.zip

    Java关系操作符简写介绍

    下面小编就为大家带来一篇Java关系操作符简写介绍。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    详解Java的位操作符

    位操作就是对这些数据进行基本的操作。如果基本类型是char、byte或者short类型的数值进行移位处理,那么会转化成int类型,再进行移位的处理

    java字符串中${}或者{}等的占位符替换工具类

    今天小编就为大家分享一篇关于java字符串中${}或者{}等的占位符替换工具类,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    陈宝峰视频-Java基础-03.操作符与表达式

    陈宝峰视频-Java基础-03.操作符与表达式 wmv格式

    java instanceof操作符使用及原理解析

    主要介绍了java instanceof操作符使用及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Thinking in java4(中文高清版)-java的'圣经'

    2.8.2 语法 2.8.3 嵌入式HTML 2.8.4 一些标签示例 2.8.5 文档示例 2.9 编码风格 2.10 总结 2.11 练习 第3章 操作符 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.4.1 方法调用中的别名问题 3.5 ...

    RxJava 操作符 图片

    RxJava 操作符图片,, 根据Flowable.java 上面的http链接下载的图片,

Global site tag (gtag.js) - Google Analytics