JAVA中位运算符合移为运算符
1: 二进制
二进制是计算机底层中最基本的运算格式,它是一种逢2进1的一种运算格式,通常以 01010111000110 的格式表示
二进制包括(源码,反码,补码)三种类型
二进制中最高位代表符号位(0:正数,1:表示负数),在二进制中从左到右 第一位代表最高位
例子:
在java中int类型占4个字节,每个字节占8位,因此一个int类型要占32位
比如1 用二进制表示为
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
二进制的计算规则
0 n d c b a
1 n d c b a
最高位: 0 表示正数, 1 表示负数
Int value ="a+b*2^1+c*2^2+d*2^3+n*2^n " 依次类推
比如:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
+( 1+0*2^1+1*2^2)= 3
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
-( 1+0*2^1+1*2^2)= -3
2:二进制中 源码,反码,补码计算规则
前提 针对有符号的数(JAVA中全部都是有符号的数)
二进制中最高位代表符号位,0->正数,1->负数
正数的源码,反码,补码都一样
服务的反码=源码的符号位不变 其他为取反
负数的补码=反码+1
0的反码 补码都是0
计算机在运算的时候都是以补码的方式运算的。
例子:
A:写出2的源码,反码,补码(正数都一样,最高位代表符号位)
源码:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
反码:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
补码:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
B:写出 -2的源码,反码,补码
源码: (最高位代表符号位)
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
反码:(符号位不变,其他位取反)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
补码: (反码+1)
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
3:位运算符规则
按位与(&): 两边操作数的位同位1时结果为1 否则为0
按位或(|): 两边操作数的位有一边为1 结果为1 否则为 0
按位异或(^): 两边操作数的位不同时结果为1 否则为0
按位取反(~): 0变1 ,1变0
例子:
首先重点强调,计算机在运算是都是按照 补码的方式进行运算的
2&4=?
第一步:求2的源码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
第二步:求 2 的反码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
第三步:求2的补码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
第四步:求4的源码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
第五步:求4的反码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
第六步:求4 的补码
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
第七步:根据按位与的计算规则计算(同为1结果为1 否则为0)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
结果为
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
最后根据二进制的技术规则:Int value ="a+b*2^1+c*2^2+d*2^3+n*2^n " 依次类推
+( 0+0*2^1+0*2^2….)=0;
2|4=?
同上计算结果:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
结果为:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
+( 0+1*2^1+1*2^2….)=6;
2^4=?
同上技术结果
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
结果为
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0
+( 0+1*2^1+1*2^2….)=6;
~2=?
同上技术结果
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
结果为
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
此时需要注意了,因为最高位的符号位是1 表示是负数,再加上计算机的运算是用的补码(且负数的补码和源码不一致)所以此时需要将补码转换成源码进行计算,转换步骤如下
第一步:转换成反码(在此基础上-1)因为负数的补码=反码+1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
第二步:转换成源码(在此基础上,符号位不变其他位取反)
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
最后计算结果
-(1+1*2^1….)=-3
分享到:
相关推荐
在Java编程语言中,变量是存储数据的容器,而数据类型则是定义变量可以存储哪...在实际编程中,开发者需要根据需求选择合适的数据类型,合理使用运算符,以及设计符合面向对象原则的类和对象,以实现高质量的软件系统。
比如,在一个输入验证功能中,我们可以用三目运算符判断用户输入是否为空,然后根据结果使用正则表达式进行进一步的验证: ```javascript let input = document.getElementById('emailInput').value; let isValid =...
在编程中,特别是在处理底层数据、加密算法或图形算法时,位运算的应用尤为常见。Java提供了六种位运算符:右移(>>>)、左移()、无符号右移(>>)、按位与(&)、按位或(|)、按位异或(^)以及按位取反(~)。 ...
在实际编程中,需要将这些知识点综合运用,编写出符合需求的Java程序。对于未实现的功能,如题目和答案的重复检查、支持对给定题目和答案的验证等,需要额外的代码逻辑来完成。同时,测试是非常重要的一环,应该对...
本章主要讲解了 Java 语言中的运算符、表达式和语句,包括算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、条件运算符和 instanceof 运算符等,以及语句的概述、分支语句、循环语句和跳转语句等。...
【标题】"j# java计算器 四则运算 栈"所涉及的知识点主要集中在编程语言J#、计算器软件开发以及数据结构中的栈。这个项目是一个简单的计算器程序,它使用了J#这一微软推出的.NET框架下的Java方言来实现,同时具备...
在 JAVA 中,四则运算的实现可以使用基本的运算符和数据类型来实现。在本文中,我们将使用基本的整数运算符来实现四则运算。 二、 代码分析 在给定的代码中,我们可以看到主要有两个函数:`main` 函数和 `...
Java控制台四则运算计算程序源码是一种基于Java编程语言实现的简单计算器,它能够处理任意长度的符合四则运算规则的数学表达式。在控制台上进行交互式操作,用户可以输入数学公式,程序会进行解析并计算出结果。这个...
(2)编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是:从键盘上输入两个运算数(double 类型)和一个运算符(char 类型),使用(1)中的类输出运算结果(保留两位小数)。...
在Java中,位运算对于理解计算机底层工作原理、优化代码性能以及在某些特定场景下(如位掩码)非常有用。今天我们将深入探讨Java中的数据类型和位运算。 首先,我们来看Java中的数据类型。Java数据类型分为两大类:...
在Java编程语言中,判断与关系运算构成了程序逻辑的基础,它们是控制程序流程的关键元素。在本教程中,我们将深入探讨这些概念,并了解如何在实际编程中应用它们。 首先,让我们了解一下关系运算符。Java提供了以下...
- C项:“\u12”使用了不完整的Unicode编码(应为4位十六进制数字),因此不符合`char`类型的定义; - D项:“\u0012”使用了完整的Unicode编码表示一个特定字符,符合`char`类型的定义。 - **结论**:正确答案是...
- `&&` 运算符实现逻辑与运算,只有当两边的条件都为真时,结果才为真。 14. **自增运算符与负号的结合方向** - 负号与自增运算符同级,结合方向从右向左。因此,`k = -m++` 先将 `m` 的值取负,然后 `m` 自增,...
Java自JDK 1.4版本开始提供了`java.util.regex`包,这为Java开发人员处理字符串提供了极大的便利。掌握正则表达式的用法对于编程来说至关重要。 #### 二、基本语法介绍 1. **转义字符**:Java中有一些预定义的转义...
- **运算符栈**:用于存储待处理的运算符,当遇到运算符时,根据其优先级决定是压入栈还是执行运算。 - **数值栈**:存储运算结果,当运算符从运算符栈弹出进行运算时,会涉及到数值栈上的元素。 4. **算法设计**...
运算符优先级决定了在表达式中哪些运算先进行。了解运算符优先级表对于优化代码和避免语法错误至关重要。以下是一个简化的C/C++运算符优先级表,这个表同样适用于许多其他基于C的编程语言,如Java、C#等。 1. **...
* &和&&的区别:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个...