java中gt与gtgt与gtgtgt与lt之间的区别
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之间的区别相关推荐
- Java中interrupted()和isInterrupted()之间的区别
Java中的interrupted()和isInterrupted() (interrupted() and isInterrupted() in Java) Here, we will see ho ...
- Java中的executeQuery_java execute,executeQuery和executeUpdate之间的区别
java execute,executeQuery和executeUpdate之间的区别 关注:269 答案:4 信息版本:手机版 电脑版 解决时间 2021-01-25 18:31 提问者怪咖 ...
- writer在java中的意思_Java在FileWriter和BufferedWriter之间的区别
小编典典 如果您使用BufferedWriter则效率更高 在刷新/关闭之间有多次写入 与缓冲区大小相比,写操作较小. 在您的示例中,您只有一次写入,因此BufferedWriter只会增加您不需要的 ...
- java中的后台线程、前台线程、守护线程区别
java中的后台线程.前台线程.守护线程区别 区别和联系 区别 联系 区别和联系 区别 后台线程和守护线程是一样的. 后台线程不会阻止进程的终止,而前台线程会, 可以在任何时候将前台线程修改为后台线程 ...
- Java 中,类、类对象、泛型之间的转换
Java 中,类.类对象.泛型之间的转换 R 为非泛型 获得类 通过类型名来获得类 通过对象来获得类 通过类名字符串来获得类 通过类来获得类名字符串 通过类来获得对象 使用 R 的无参数构造器来创建对 ...
- 浅谈 JAVA中静态初始化块和非静态初始化块的区别
众所周知在JAVA编程语言中有两种初始化块: 静态初始化块 非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义: static{} 执 ...
- Java学习笔记1:Java中有关print、println、printf的用法和区别
Java学习笔记1:Java中有关print.println.printf的用法和区别 最近在学习java,写一些笔记记录下. 1.print()函数是一般的标准输出,但是不换行. 2.println ...
- java中操作字符串都有哪些类,他们之间有什么区别?
java中操作字符串的类有哪些? String StringBuffer StringBuilder 区别 我们可以先看一下这几个类的继承关系图 从类的继承关系上来开的话,String和StringB ...
- Java注解@Mock和@InjectMocks及@Mock和@Spy之间的区别
Java注解@Mock和@InjectMocks及@Mock和@Spy之间的区别 1.@Mock和@InjectMocks的区别 @Mock为您需要的类创建一个模拟实现. @InjectMocks创建 ...
最新文章
- 4.04Day14递推、三元表达式、列表/字典推导式、匿名函数
- Open×××整合OpenLDAP
- MapReduce Job本地提交过程源码跟踪及分析
- 几种流行Webservice框架性能对照
- java中对map使用entrySet循环
- 19-6/28作业:100以内偶数求和
- python嵌套列表法实现树_在python中创建递归迭代嵌套列表的“数据树”路径
- 某大型银行深化系统技术方案之七:核心层之流程控制引擎
- Tensorflow:操作执行原理
- 理论知识内容有_育婴师培训课程包含哪些内容?
- 利用python画简单图形示例代码_使用python画社交网络图实例代码
- HttpWatch工具简介及使用技巧 (转自:卖烧烤的鱼)
- (深入篇)漫游语音识别技术—带你走进语音识别技术的世界
- JAVA大华摄像头抓拍与API接口集成
- Flak模型和应用(一对一,一对多,多对多)
- 如何Troubleshooting当Java Application发生死锁或Hangs
- 项目中的风险有哪些?测试人员或者管理者如何控制风险?
- CAN与CANOpen(一)
- 简洁大气用户登录页面手机端模板
- 最后一次——时间序列分析
热门文章
- 淘宝数据库内核月报搜索工具
- 月报 | 2021 年 6 月文章汇总
- Oracle 自动段空间管理(ASSM:auto segment space management)
- 《计算机网络--自顶向下方法》第一章--计算机网络和英特网
- Pygame游戏之 豌豆射手
- 欧能智能电销机器人争做行业No.1
- 平板电脑与计算机连接网络,平板电脑怎么连接网络 平板连接wifi上网方法【详解】...
- 人工智能入门书籍推荐
- 嘀嗒能借顺风车的东风乘风而起么?
- Android系统开发篇(四) —— Samba服务器的搭建和相关配置