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

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

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

2. 符号之间的区别

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

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

4 >2 :我就写这玩玩,不懂就算了

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

4 >>1

表示4二进制表示向右移动一位,结果为2.

4二进制:100 ------> 右移一位:010 = 2

-4 >>1

表示-4二进制表示向右移动一位,结果为-2

-4二进制(红色表示符号位): 4的二进制表示为:100,------> -4补码表示(取反加1):1100------>右移一位(补1):  1110 = -2

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

2 >>1

表示4二进制表示向右移动一位,结果为2.

4二进制:0000 0000 0000 0000 0000 0000 0000 0010------> 右移一位:0000 0000 0000 0000 0000 0000 0000 0001 = 1

-2 >>1

表示-2的32二进制表示向右移动一位,结果为 

-2二进制(红色表示补全位):2的二进制表示为:0000 0000 0000 0000 0000 0000 0000 0010,------> -2补码表示(取反加1):1111 1111 1111 1111 1111 1111 1111 1110, ------> 右移一位(补0):0111 1111 1111 1111 1111 1111 1111 1111 = 

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

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

5. 在测试中遇到的问题

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

参考了部分数据类型,发现是数据类型长度不满足。

变化的代码如下:

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

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

java中gt与gtgt与gtgtgt与lt之间的区别相关推荐

  1. Java中interrupted()和isInterrupted()之间的区别

    Java中的interrupted()和isInterrupted() (interrupted() and isInterrupted() in Java) Here, we will see ho ...

  2. Java中的executeQuery_java execute,executeQuery和executeUpdate之间的区别

    java execute,executeQuery和executeUpdate之间的区别 关注:269  答案:4  信息版本:手机版 电脑版 解决时间 2021-01-25 18:31 提问者怪咖 ...

  3. writer在java中的意思_Java在FileWriter和BufferedWriter之间的区别

    小编典典 如果您使用BufferedWriter则效率更高 在刷新/关闭之间有多次写入 与缓冲区大小相比,写操作较小. 在您的示例中,您只有一次写入,因此BufferedWriter只会增加您不需要的 ...

  4. java中的后台线程、前台线程、守护线程区别

    java中的后台线程.前台线程.守护线程区别 区别和联系 区别 联系 区别和联系 区别 后台线程和守护线程是一样的. 后台线程不会阻止进程的终止,而前台线程会, 可以在任何时候将前台线程修改为后台线程 ...

  5. Java 中,类、类对象、泛型之间的转换

    Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...

  6. 浅谈 JAVA中静态初始化块和非静态初始化块的区别

    众所周知在JAVA编程语言中有两种初始化块: 静态初始化块 非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义: static{} 执 ...

  7. Java学习笔记1:Java中有关print、println、printf的用法和区别

    Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...

  8. java中操作字符串都有哪些类,他们之间有什么区别?

    java中操作字符串的类有哪些? String StringBuffer StringBuilder 区别 我们可以先看一下这几个类的继承关系图 从类的继承关系上来开的话,String和StringB ...

  9. Java注解@Mock和@InjectMocks及@Mock和@Spy之间的区别

    Java注解@Mock和@InjectMocks及@Mock和@Spy之间的区别 1.@Mock和@InjectMocks的区别 @Mock为您需要的类创建一个模拟实现. @InjectMocks创建 ...

最新文章

  1. 4.04Day14递推、三元表达式、列表/字典推导式、匿名函数
  2. Open×××整合OpenLDAP
  3. MapReduce Job本地提交过程源码跟踪及分析
  4. 几种流行Webservice框架性能对照
  5. java中对map使用entrySet循环
  6. 19-6/28作业:100以内偶数求和
  7. python嵌套列表法实现树_在python中创建递归迭代嵌套列表的“数据树”路径
  8. 某大型银行深化系统技术方案之七:核心层之流程控制引擎
  9. Tensorflow:操作执行原理
  10. 理论知识内容有_育婴师培训课程包含哪些内容?
  11. 利用python画简单图形示例代码_使用python画社交网络图实例代码
  12. HttpWatch工具简介及使用技巧 (转自:卖烧烤的鱼)
  13. (深入篇)漫游语音识别技术—带你走进语音识别技术的世界
  14. JAVA大华摄像头抓拍与API接口集成
  15. Flak模型和应用(一对一,一对多,多对多)
  16. 如何Troubleshooting当Java Application发生死锁或Hangs
  17. 项目中的风险有哪些?测试人员或者管理者如何控制风险?
  18. CAN与CANOpen(一)
  19. 简洁大气用户登录页面手机端模板
  20. 最后一次——时间序列分析

热门文章

  1. 淘宝数据库内核月报搜索工具
  2. 月报 | 2021 年 6 月文章汇总
  3. Oracle 自动段空间管理(ASSM:auto segment space management)
  4. 《计算机网络--自顶向下方法》第一章--计算机网络和英特网
  5. Pygame游戏之 豌豆射手
  6. 欧能智能电销机器人争做行业No.1
  7. 平板电脑与计算机连接网络,平板电脑怎么连接网络 平板连接wifi上网方法【详解】...
  8. 人工智能入门书籍推荐
  9. 嘀嗒能借顺风车的东风乘风而起么?
  10. Android系统开发篇(四) —— Samba服务器的搭建和相关配置