原 JAVA位运算总结

关于二进制

关于二进制的概念,网上已经很多,这里不多赘述,只说关键的属性说明和示例。

维基百科

记住,原码是给人看的,补码才是计算机真正使用的。

我们一般所说的二进制是有32位,首位是符号位。0是正数,1是负数。下面我们来根据例子说明二进制与十进制的转换,以及原码补码反码的概念。

  • 二进制转10 进制(32位太长,我们省略我8位方便演示) 规则:从后往前依次下标为0,1,2..n,如果位是1 则记2的下标次方,有多少个是1的都相加。最后根据符号位标示正负即可。
    • 示例1:0000 0011 的十进制是多少?

    (2的0次方)+(2的1次方)= +3

    • 示例2:1000 0011 的十进制是多少? 补码:1111 1101 -((2的0次方)+(2的1次方))= -3

对于正数来说,原码反码补码都一样。这里主要说的是负数。 以-3为例

  • 原码

1000 0011

  • 反码(原码0->1,1->0,保留符号位)

1111 1100

  • 补码 =反码+1000 00111(逢2进1)

1111 1101

位运算(以补码进行计算)

a=-3,b=2;

位与 & (位同为1,记1,否则记0)

  • 示例 a&b

a补码:1111 1101

b补码:0000 0010

结果: 0000 0000(正数补码反码一样) = 0

位或 | (位只要有1,则记1,否则记0)

  • 示例a|b

a补码:1111 1101

b补码:0000 0010

结果: 1111 1111(补码)

结果反码:1111 1110

结果原码:1000 0001(保留符号位)

结果= -1

位异或 ^ (位不一样则记1,否则记0)

  • 示例 a^b

a补码:1111 1101

b补码:0000 0010

结果: 1111 1111

结果反码:1111 1110(补码-1)

结果原码:1000 0001(保留符号位)

结果 = -1

位取反 ~ (位取反,1>0,0>1)

  • 示例 ~a

a补码:1111 1101

结果: 0000 0010

结果 = 2

左移 << 符号位不变,低位补0 (自右向左低到高)

  • 示例 a<<b

a补码:1111 1101

结果: 1111 0100

结果反码:1111 0011

结果原码:1000 1100(保留符号位)

结果 = -12

右移 >> 低位溢出,符号位不变,并用符号位补溢出的高位

  • 示例 a>>b

a补码:1111 1101

结果: 1111 1111

结果反码:1111 1110

结果原码:1000 0001(保留符号位)

结果 = -1

备注

以上内容在java环境中测试通过。不对之处还望指正。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

CPP--正码,反码,补码~附整数溢出的探讨

最近微信公众号老被举报,以后福利就发完立毁了,原创功能都被暂停几天了。。。晕,不过也无所谓了,举报的人高兴就好,我无所谓的~好在99.9%都是我自己写的文章,所...

2809
来自专栏AhDung

【C#】Excel舍入函数Round、RoundUp、RoundDown的C#版

本人在C#中进行小数舍入的时候常常会怀念Excel中的Round、RoundUp、RoundDown这几个函数,原因就是后者“接地气”,比较符合俺小老百姓的舍入...

682
来自专栏木子昭的博客

机器学习三剑客之PandasPandas的两大核心数据结构Panda数据读取(以csv为例)数据处理Pandas的分组和聚合(重要)

Pandas是基于Numpy开发出的,专门用于数据分析的开源Python库 Pandas的两大核心数据结构 Series(一维数据) 允许索引重复...

2756
来自专栏企鹅号快讯

拒绝加班!工作中必会的15个excel函数

有人会说,现在网上excel技巧太多,一眼看过去感觉各个都好牛逼,恨不得全部收藏起来。可是,能真正能用到的时候并不多,因为学习的知识都太散了,也不能及时进行总结...

2455
来自专栏web前端教室

javascript 红皮高程(16)

位操作符的内容有些难度,并且也不常用。 从这几天的文章阅读量可以看出来,阅读的人比较少。 但学习这事,从来都是一件艰苦的事情,从来不轻松。 也许难懂,多看几遍就...

1736
来自专栏Coco的专栏

你所不知道的 CSS 动画技巧与细节

1133
来自专栏GIS讲堂

调用天地图API实现关键词搜索

调用天地图APILocalSearch接口,实现关键词搜索,调用方式为:localsearch.search(keywod)。

1033
来自专栏SeanCheney的专栏

《利用Python进行数据分析·第2版》第11章 时间序列11.1 日期和时间数据类型及工具11.2 时间序列基础11.3 日期的范围、频率以及移动11.4 时区处理时区本地化和转换11.5 时期及其

时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学、经济学、生态学、神经科学、物理学等。在多个时间点观察或测量到的任何...

4926
来自专栏程序员叨叨叨

8.3 入口函数

通常高级语言程序中只有一个入口函数,不过由于着色程序分为顶点程序和片断程序,两者对应着图形流水线上的不同阶段,所以这两个程序都各有一个入口函数。

1324
来自专栏数据小魔方

商务图表案例——仿经济学人分组漏斗图~

今天看到一个看着挺养眼的经济学人图表案例,于是职业病爆发了,用ggplot2按照自己的思路写了一遍。现在把代码思路分享给大家! ? 加载包: library("...

3384

扫码关注云+社区