java中的位运算符.按位非.位运算符计算方法
2021/9/11 14:05:54
本文主要是介绍java中的位运算符.按位非.位运算符计算方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
按位非~
按位非是将二进制码中0变成1,1变成0.计算机存储数字是用机械码存储的,所以要将所给的整型数字转化成二进制.先以正数为例
eg: 3转化成二进制码就是0000 0000 0000 0000 0000 0000 0000 0011
//3是以Int型存储的,占4个字节,32位.转化后的二进制的第一个数字代表正负,0代表这个数是正数,1代表这个数是负数.且正数的原码,反码,补码是一样的
因为3的原码和补码是一样的,所以3的补码是0000 0000 0000 0000 0000 0000 0000 0011.如果是负数的话要先将原码取反,在转换成补码.(后面有说明)
得到3的补码后再进行按位非计算
补码:0000 0000 0000 0000 0000 0000 0000 0011
按位非计算后:1111 1111 1111 1111 1111 1111 1111 1100
因为二进制码的第一个数是1,代表这个数是负数,如果按位非计算后得到的数是负数,就要将其减一再取反.
减一后:1111 1111 1111 1111 1111 1111 1111 1011
然后再进行取反后:1000 0000 0000 0000 0000 0000 0000 0100,这个就是最后的结果了,转化成十进制数就是-4.附上正数的记忆方法:~(A)=-(A+1)
//负数的反码就是第一个数字不变(符号位不变)后面的每个数都要取反
再举一个负数的例子:eg:-3
-3的原码是1000 0000 0000 0000 0000 0000 0000 0011因为负数想要求补码,要先将原码取反,再求补码,所以先将原码取反:0111 1111 1111 1111 1111 1111 1111 1100,再求补码:0111 1111 1111 1111 1111 1111 1111 1101,因为得到的是正数,所以这个就是结果.
//补码就是反码的基础上再加1
位运算符<<,>>
左移运算符(<<):将数的二进制码全部左移若干位,左边超出的二进制位舍弃,并再末尾补0(左移多少个位就补多少个0),如果数字没有溢出的话,左移n个单位就相当于乘以2的n次方.eg:4<<2的结果位16
右移动运算符(>>):将数的二进制码像右移动若干个位,超出的部分舍弃,空位正数补0,负数补1.eg:7>>2.的结果为1
这篇关于java中的位运算符.按位非.位运算符计算方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)