`
张伟_2943
  • 浏览: 5179 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA中位运算符合移为运算符

    博客分类:
  • JAVA
阅读更多
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
0
0
分享到:
评论

相关推荐

    java变量数据类型运算符

    在Java编程语言中,变量是存储数据的容器,而数据类型则是定义变量可以存储哪...在实际编程中,开发者需要根据需求选择合适的数据类型,合理使用运算符,以及设计符合面向对象原则的类和对象,以实现高质量的软件系统。

    三目运算符+正则表达式

    比如,在一个输入验证功能中,我们可以用三目运算符判断用户输入是否为空,然后根据结果使用正则表达式进行进一步的验证: ```javascript let input = document.getElementById('emailInput').value; let isValid =...

    java位运算大全.pdf

    在编程中,特别是在处理底层数据、加密算法或图形算法时,位运算的应用尤为常见。Java提供了六种位运算符:右移(>>>)、左移()、无符号右移(>>)、按位与(&)、按位或(|)、按位异或(^)以及按位取反(~)。 ...

    java实现自动生成四则运算实验报告.docx

    在实际编程中,需要将这些知识点综合运用,编写出符合需求的Java程序。对于未实现的功能,如题目和答案的重复检查、支持对给定题目和答案的验证等,需要额外的代码逻辑来完成。同时,测试是非常重要的一环,应该对...

    Java实用课件第3章运算符、表达式与语句.ppt

    本章主要讲解了 Java 语言中的运算符、表达式和语句,包括算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、条件运算符和 instanceof 运算符等,以及语句的概述、分支语句、循环语句和跳转语句等。...

    j# java计算器 四则运算 栈

    【标题】"j# java计算器 四则运算 栈"所涉及的知识点主要集中在编程语言J#、计算器软件开发以及数据结构中的栈。这个项目是一个简单的计算器程序,它使用了J#这一微软推出的.NET框架下的Java方言来实现,同时具备...

    简单的JAVA四则运算.pdf

    在 JAVA 中,四则运算的实现可以使用基本的运算符和数据类型来实现。在本文中,我们将使用基本的整数运算符来实现四则运算。 二、 代码分析 在给定的代码中,我们可以看到主要有两个函数:`main` 函数和 `...

    java控制台四则运算计算程序源码

    Java控制台四则运算计算程序源码是一种基于Java编程语言实现的简单计算器,它能够处理任意长度的符合四则运算规则的数学表达式。在控制台上进行交互式操作,用户可以输入数学公式,程序会进行解析并计算出结果。这个...

    java编写一个类,该类可以进行加、减、乘、除四则运算,并且输出运算结果

    (2)编写一个包含主方法main的公共类(访问权限为public的类),主方法main中完成的任务是:从键盘上输入两个运算数(double 类型)和一个运算符(char 类型),使用(1)中的类输出运算结果(保留两位小数)。...

    【IT十八掌徐培成】Java基础第03天-01.位运算-数据类型.zip

    在Java中,位运算对于理解计算机底层工作原理、优化代码性能以及在某些特定场景下(如位掩码)非常有用。今天我们将深入探讨Java中的数据类型和位运算。 首先,我们来看Java中的数据类型。Java数据类型分为两大类:...

    Java-Java中的判断与关系运算教程

    在Java编程语言中,判断与关系运算构成了程序逻辑的基础,它们是控制程序流程的关键元素。在本教程中,我们将深入探讨这些概念,并了解如何在实际编程中应用它们。 首先,让我们了解一下关系运算符。Java提供了以下...

    2.java的基本数据类型运算符和流程控制选择题.docx

    - C项:“\u12”使用了不完整的Unicode编码(应为4位十六进制数字),因此不符合`char`类型的定义; - D项:“\u0012”使用了完整的Unicode编码表示一个特定字符,符合`char`类型的定义。 - **结论**:正确答案是...

    java数据类型和表达式

    - `&&` 运算符实现逻辑与运算,只有当两边的条件都为真时,结果才为真。 14. **自增运算符与负号的结合方向** - 负号与自增运算符同级,结合方向从右向左。因此,`k = -m++` 先将 `m` 的值取负,然后 `m` 自增,...

    Java正则表达式入门及用法

    Java自JDK 1.4版本开始提供了`java.util.regex`包,这为Java开发人员处理字符串提供了极大的便利。掌握正则表达式的用法对于编程来说至关重要。 #### 二、基本语法介绍 1. **转义字符**:Java中有一些预定义的转义...

    用JAVA写的带优先级的计算器源程序

    - **运算符栈**:用于存储待处理的运算符,当遇到运算符时,根据其优先级决定是压入栈还是执行运算。 - **数值栈**:存储运算结果,当运算符从运算符栈弹出进行运算时,会涉及到数值栈上的元素。 4. **算法设计**...

    运算符优先级表-可直接打印

    运算符优先级决定了在表达式中哪些运算先进行。了解运算符优先级表对于优化代码和避免语法错误至关重要。以下是一个简化的C/C++运算符优先级表,这个表同样适用于许多其他基于C的编程语言,如Java、C#等。 1. **...

    java常见面试题(史上最全最经典-希望对你有用)

    * &和&&的区别:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个...

Global site tag (gtag.js) - Google Analytics