java二进制运算 - 爱问答

(爱问答)

java二进制运算

byte=127  ~a=-128   具体二进制过程怎么做?11111111到00000000   在怎么办

运算

左移位:<<

/* 00000001 << 1 = 00000010 */
1 << 1 == 2
/* 00000001 << 3 = 00001000 */
1 << 3 == 8

右移位:>> 是有符号操作符,使用最高位来表示数值的正负,负数的最高位永远为1。一个以1开头的二进制数移位后还将以1开头,一个以0开头的二进制树移位后还将以0开头。

/* 11111111 11111111 11111111 11110000 >> 4 = 11111111 11111111 11111111 11111111 */
0xFFFFFFF0 >> 4 == 0xFFFFFFFF
/* 00001111 11111111 11111111 11111111 >> 4 = 00000000 11111111 11111111 11111111 */
0x0FFFFFFF >> 4 == 0x00FFFFFF

可以使用叫作“无符号右移”运算符的第三个操作符:>>>来实现以“0”填充的移位,这种移位会忽略符号位并总是用“0”来填充。最大的用途是迅速求2的幂。1向左移1位是2,移2位是4,相似的,向右移1位相当于是把该数除以2。

/* 10000000 00000000 00000000 00000000 >>> 1 = 01000000 00000000 00000000 00000000 */
0x80000000 >>> 1 == 0x40000000
/* 10000000 00000000 00000000 00000000 >> 1 = 11000000 00000000 00000000 00000000 */
0x80000000 >> 1  == 0xC0000000

位运算操作符

以下是java中四个常见的位操作符: ~ : 按位取反 & : 按位与(全1为1,有0则为0) | : 按位或(有1为1,全0则为0) ^ : 按位异或(相同为0,不同为1)

比如:

1010 & 0101 == 0000
1100 & 0110 == 0100
1010 | 0101 == 1111
1100 | 0110 == 1110
~1111 == 0000
~0011 == 1100
1010 ^ 0101 == 1111
1100 ^ 0110 == 1010

你可以通过“或”运算,把一个二进制数上的指定位“设置”为1,并且不会影响到其他位。 10000001 | 00100000 = 10100001 /* 第五位设为1 */ 10000001 | 1 << 5 = 10100001 /* 同样作用 */ 00000000 | 1 << 2 | 1 << 5 = 00100100


相关标签:java运算

下一篇:问题:SqlServer依据入参的门诊号,更新该门诊号对应患者的就诊时间更改为当前时间。

上一篇:java中如何将密码设置为中文.数字。英文都有的密码?

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?