热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java中gt与gtgt与gtgtgt与lt之间的区别

本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。

1. 今天在刷剑指,遇到一道题:

 

**输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。**

看到一个使用逻辑移位的放大进行的操作,很受启发,顺便整理一下从未用到的符号含义。

2. 符号之间的区别 


符号含义正数负数
>普通的大于等于号\\
>>带符号右移正数右移高位补0负数右移高位补1
<<带符号左移左移后面用0补左移后面用0补齐
>>>无符号右移高位通通补0高位通通补0

 

 

3. 说到这里&#xff0c;相比懂的人已经看懂了&#xff0c;如果较为新手&#xff0c;则会有些懵逼&#xff0c;那么我们来举几个简单的例子.

4 >2 &#xff1a;我就写这玩玩&#xff0c;不懂就算了

  • >>(带符号右移&#xff0c;由于符号的限制实际位数跟数据相关)

 

4 >>1 &#xff1a;

表示4二进制表示向右移动一位&#xff0c;结果为2.

4二进制&#xff1a;100 ------> 右移一位&#xff1a;010 &#61; 2

 

-4 >>1 &#xff1a;

表示-4二进制表示向右移动一位&#xff0c;结果为-2

-4二进制&#xff08;红色表示符号位&#xff09;&#xff1a; 4的二进制表示为&#xff1a;100&#xff0c;------> -4补码表示&#xff08;取反加1&#xff09;&#xff1a;1100------>右移一位&#xff08;补1&#xff09;:  1110 &#61; -2

 

>>>(无符号右移,int默认是32位)

2 >>1 &#xff1a;

表示4二进制表示向右移动一位&#xff0c;结果为2.

4二进制&#xff1a;0000 0000 0000 0000 0000 0000 0000 0010------> 右移一位&#xff1a;0000 0000 0000 0000 0000 0000 0000 0001 &#61; 1

 

-2 >>1 &#xff1a;

表示-2的32二进制表示向右移动一位&#xff0c;结果为 ${2^{31}} - 1$

-2二进制&#xff08;红色表示补全位&#xff09;&#xff1a;2的二进制表示为&#xff1a;0000 0000 0000 0000 0000 0000 0000 0010&#xff0c;------> -2补码表示&#xff08;取反加1&#xff09;&#xff1a;1111 1111 1111 1111 1111 1111 1111 1110&#xff0c; ------> 右移一位&#xff08;补0&#xff09;&#xff1a;0111 1111 1111 1111 1111 1111 1111 1111 &#61; ${2^{31}} - 1$

 

4. 说到这里&#xff0c;再来探讨一下&表示符号

    表示与的意思&#xff0c;在离散数学中&#xff0c;相同为0&#xff0c;不同为1&#xff0c;如0011与1111的&操作为&#xff1a;0011&#xff0c;很容易理解。

 

5. 在测试中遇到的问题

我们经常在java中用到 Math.pow(x, y)&#xff0c;我在测试中发现&#xff0c;运算出来竟然是小数。。。

参考了部分数据类型&#xff0c;发现是数据类型长度不满足。

变化的代码如下&#xff1a;

public class Main {public static void main(String[] args) {long a &#61; (long)Math.pow(2, 31) - 1;System.out.println(a);}
}

 

6. 再来总结一下对interger数据操作的题目&#xff0c;一般使用移位操作最为方便&#xff0c;但是一般我们接触到的比较少&#xff0c;大都不会熟练应用&#xff0c;需要多练习。另外我差的资料比较多&#xff0c;如有错误&#xff0c;麻烦指正一下&#xff0c;共同学习&#xff0c;谢谢各位皇阿玛~~~~~

 


推荐阅读
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 分享一款基于Java开发的经典贪吃蛇游戏实现
    本文介绍了一款使用Java语言开发的经典贪吃蛇游戏的实现。游戏主要由两个核心类组成:`GameFrame` 和 `GamePanel`。`GameFrame` 类负责设置游戏窗口的标题、关闭按钮以及是否允许调整窗口大小,并初始化数据模型以支持绘制操作。`GamePanel` 类则负责管理游戏中的蛇和苹果的逻辑与渲染,确保游戏的流畅运行和良好的用户体验。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • Java排序算法详解:选择排序、插入排序、冒泡排序与递归实现
    本文详细解析了Java中的几种基础排序算法,包括选择排序、插入排序和冒泡排序,并探讨了递归在这些算法中的应用。选择排序通过每次找到未排序部分的最小值并将其置于已排序部分的末尾来实现;插入排序则通过逐步将每个元素插入到已排序序列的正确位置;而冒泡排序则是通过多次遍历数组,两两比较并交换相邻的元素,最终使较大的元素逐渐“冒”到数组末尾。文章还提供了具体的代码示例,帮助读者更好地理解和掌握这些算法的实现细节。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 链表作为一种与数组并列的基本数据结构,在Java中有着广泛的应用。例如,Java中的`ArrayList`基于数组实现,而`LinkedList`则是基于链表实现。链表在遍历操作时具有独特的性能特点,特别是在插入和删除节点时表现出色。本文将详细介绍单向链表的基本概念、操作方法以及在Java中的具体实现,帮助读者深入理解链表的特性和应用场景。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 蓝桥竞赛中的回形取数问题是一个经典的算法挑战。本文详细解析了该问题的正确实现代码,重点探讨了 `hasNext()` 和 `next()` 方法的区别与应用。尽管两者在功能上类似,都会等待用户输入下一个字符,但它们的返回值类型不同,`hasNext()` 返回一个布尔值,表示是否还有输入,而 `next()` 则直接返回下一个输入的值。通过具体的代码示例和详细的逻辑分析,本文为参赛者提供了宝贵的参考和指导。 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 本文详细介绍了267 Collections的特性和应用场景。作为Java集合框架中的核心接口,Collection接口是所有单列集合类的顶级接口,涵盖了列表、集合和队列等数据结构。通过具体的应用实例,本文深入解析了Collection接口的各种方法和功能,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 在本文中,我们将深入探讨C#中的构造函数及其应用场景。通过引入构造函数,可以有效解决在访问类属性时反复赋值导致的代码冗余问题,提高代码的可读性和维护性。此外,还将介绍构造函数的不同类型及其在实际开发中的最佳实践。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 枚举类中enum关键字的常见应用与实践
    在枚举类中,`enum`关键字具有重要的作用,本文探讨了其常见的应用场景与实践。特别指出,枚举对象必须置于枚举类的首行,否则将导致编译错误。通过具体的代码示例,详细解析了这一规则及其背后的原理,帮助开发者更好地理解和使用枚举类。 ... [详细]
  • 在本节课程中,我们将深入探讨 JSP 编程中的实际案例,通过具体代码示例 `code316.java` 来解析数据库连接的实现。该示例展示了如何使用 Java 的 JDBC API 进行数据库操作,包括加载数据库驱动、建立连接等关键步骤。通过本课程的学习,读者将能够更好地理解和应用 JSP 中的数据库连接技术。 ... [详细]
author-avatar
低调vs完美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有