二进制负数以它正值的补码形式表达
补码:反码+1等于补码
比如:System.out.println(Integer.toBinaryString(-5));
打印:1111 1111 1111 1111 1111 1111 1111 1011 不用想了肯定是32位
过程是这样的:
一个负数,比如-5,它的二进制在java里面是这样表示
1000 0000 0000 0000 0000 0000 0000 0101 (负值是开头1)
它的正值是:
0000 0000 0000 0000 0000 0000 0000 0101 (正值开头是0)
反码是:
1111 1111 1111 1111 1111 1111 1111 1010 (这里是正值的反码)
再加上1是:
1111 1111 1111 1111 1111 1111 1111 1011
即得到打印的内容
java ~ 操作符,对每个二进制位的内容求反,即1变成0,0变成1
测试负数:
int a = -5;//101;
System.out.println(~a);
打印:4
过程是这样的,首先表示出来这个负数
1111 1111 1111 1111 1111 1111 1111 1011(上面已经提到为什么这样表示)
各位取反得到
0000 0000 0000 0000 0000 0000 0000 0100
转为10进制得到4
测试正数:
int a = 5;//101;
System.out.println(~a);
打印:-6
首先表示出来这个正数:
0000 0000 0000 0000 0000 0000 0000 0101
各位取反得到:
1111 1111 1111 1111 1111 1111 1111 1010
java & 操作符,对应的二进制位进行与操作,两个都为1才为1,其他情况均为0
测试:
System.out.println(5&6);
打印:4
过程:
5表示成:0000 0000 0000 0000 0000 0000 0000 0101
6表示成:0000 0000 0000 0000 0000 0000 0000 0110
进行 & :0000 0000 0000 0000 0000 0000 0000 0100
得到:4
java | 操作符,对应的二进制位进行或操作,两个都为0才为0,其他情况均为1
测试:
System.out.println(5|6);
打印:7
过程:
5表示成:0000 0000 0000 0000 0000 0000 0000 0101
6表示成:0000 0000 0000 0000 0000 0000 0000 0110
进行 | :0000 0000 0000 0000 0000 0000 0000 0111
得到:7
java ^ 操作符 当对应二进制位值相同,该位为0 否则为1
测试:
System.out.println(5^6);
打印:3
过程:
5表示成:0000 0000 0000 0000 0000 0000 0000 0101
6表示成:0000 0000 0000 0000 0000 0000 0000 0110
进行 ^ :0000 0000 0000 0000 0000 0000 0000 0011
得到:3
java << 操作符,左边移动,右面填充0
测试:
System.out.println(5<<1);
打印:10
5表示成:0000 0000 0000 0000 0000 0000 0000 0101
进行 <<1 操作:0000 0000 0000 0000 0000 0000 0000 1010
java >> 操作符,右边移动,左面填充0
测试:
System.out.println(5>>>1);(“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。)
打印:2
5表示成:0000 0000 0000 0000 0000 0000 0000 0101
进行 >>>1 操作:0000 0000 0000 0000 0000 0000 0000 0010
左移动一位相当乘以2 右移动一位相当处以2
(http://www.blogjava.net/zhaomingchao/articles/298318.html)
分享到:
相关推荐
位操作符用于操作二进制位,如按位与(&)、按位或(|)、按位异或(^)、左移()、右移(>>)和无符号右移(>>>). 这些操作符在处理二进制数据,如数组索引、颜色编码或者位标志时非常有用。 六、条件操作符(三元运算符) ...
### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...
左移操作符()是位运算符之一,它在Java中有着特定的应用和理解。本篇文章将深入探讨Java中的左移操作符及其相关知识点。 一、位运算符概述 位运算符直接作用于二进制位,它们包括:左移(),右移(>>),无符号...
3. **避免直接比较**:当需要判断两个 `double` 值是否相等时,不要直接使用 `==` 操作符。应该定义一个很小的正数作为误差容限,并检查两个数之间的差值是否小于这个容限。 ```java double a = 0.1; double b =...
在Java中,左移操作符是`,右移操作符是`>>`。右移又分为算术右移和逻辑右移,算术右移在移动时会保持符号位不变(即负数的符号位为1则保持为1),而逻辑右移在移动时不论原来的符号位是什么都用0来填充。 **具体...
### 黑马程序员入学Java知识(精华总结) #### 一、Java概述与基础知识 ##### 1、何为编程? 编程是指使用计算机语言来编写指令,这些指令被计算机执行以完成特定任务的过程。通过编程,我们可以控制计算机的行为...
以上知识点在"JAVA知识点总结思维导图(xmind)"中可能以思维导图的形式详细展开,包括每个主题的子话题和相关实例,帮助学习者系统地理解和掌握Java编程。通过深入学习和实践这些知识点,可以成为一名熟练的Java...
本篇文章将深入探讨Java中的位运算,包括其基本概念、常用操作符以及实际应用。 一、位运算的基本概念 在计算机内部,所有的数据都是以二进制形式存储的。位运算就是对这些二进制位进行操作。一个整数在计算机内存...
### Java精华总结 #### 一、Java概述与基础知识 ##### 1. 何为编程? 编程是一种通过编写计算机可以理解的指令来解决问题的过程。这些指令是按照特定的语法规则组织起来的,用来指导计算机执行特定任务。 ##### ...
3.5.1 一元加、减操作符 3.6 自动递增和递减 3.7 关系操作符 3.7.1 测试对象的等价性 3.8 逻辑操作符 3.8.1 短路 3.9 直接常量 3.9.1 指数记数法 3.10 按位操作符 3.11 移位操作符 3.12 三元操作符 if-else 3.13 ...
表达式是由操作符和操作数组成的,可计算出一个值。三目运算符(条件运算符)如:`condition ? expr1 : expr2`,根据条件判断执行expr1或expr2。 十一、程序流程控制 Java提供了if-else、switch、for、while、do-...
通过位运算实现了数据的重新排列,使得Java能够正确读取由C语言生成的短整型数据。 ##### 整型转换 ```java public static int hltonl(int hl) { int out = 0; out = (hl & 0xff) ; out |= (hl & 0xff00) ; out...
### Java企业级开发综合技能知识总结 #### Java面向对象 1. **super()与this()的区别?** - `super()`用于调用父类构造器,必须作为子类构造器的第一条语句出现。 - `this()`用于调用本类的其他构造器,也必须...
### JAVA经典语句总结 #### 一、面向对象的核心概念 **1. 程序=对象+消息** 这是面向对象编程的一个基本观点。在Java中,一切都是对象,程序通过对象来实现其功能。对象是类的实例,而类则是对一类具有相同属性和...
Java 重要知识点总结 Java 是一种编译解释型语言,它的垃圾回收机制可以自动进行,无需程序员负责回收无用内存。在 Java 中,环境变量配置非常重要,在我的电脑 > 属性 > 高级 > 环境变量里的 Path 中加入 C:\...
在Java中,&是按位与操作符,应用于整数类型的运算;&&是逻辑与操作符,应用于布尔表达式短路与运算。HashMap是基于哈希表的Map接口实现,而Hashtable是同步的,适用于多线程环境。 final、finally、finalize的区别...
位运算符主要用于按位操作二进制数据。 1. **按位与 (&)**: - **定义**:对于参与运算的两个表达式的各二进制位,只有当两个相应的位都为1时,结果位才为1;否则结果位为0。 - **示例**:对于二进制数 `0111` 和...
本文总结了 Java 语言的基础知识,涵盖了 JDK、JRE、JVM 等概念,类和对象的区别、构造方法和普通方法的区别、作用域的四种类型、Integer 与 int 的区别、&和&&的区别、类变量与实例变量的区别、=="和equals的区别等...