本文已参与「新人创作礼」活动,一起开启掘金创作之路。
左移位 <<
格式: num << value
意义: 将num左移value位置
运算规则: 丢弃最高位, 0补最低位
数学意义: 在数字没有溢出的前提下,对于正数和负数, 左移一位都相当于乘以2的1 次方,左移n位就相当于乘以2的n次方
注意: 如果移进高阶位(31或63位), 那么该值将变为负值
栗子: 3 << 2
解: 先将10进制的3转化为2进制
0000 0000 0000 0000 0000 0000 0000 0011
将 2进制的数据丢弃2个最高位 在最低位用0补位
~~~~00~~~~00 0000 0000 0000 0000 0000 0000 001100
红色为删除的位数 蓝色为补齐的位数 丢弃补齐的位数由偏移量 (value)决定
将处理的数据 (1100) 转化为10进制 (12)
所以结果为 12
右移位 >>
格式: num >> value
意义: 将num右移value位置
运算规则: 丢弃最低位, 在最高位 正数用0, 负数用1 补位
数学意义: 右移一位相当于除2,右移n位相当于除以2的n次方
栗子: 9 >> 2
解: 先将10进制的9转化为2进制
0000 0000 0000 0000 0000 0000 0000 1001
将二进制的数据丢弃2个最低位 在最高位 正数用0, 负数用1 补位
000000 0000 0000 0000 0000 0000 0000 10~~~~01~~~~
红色为删除的位数 蓝色为补齐的位数 丢弃补齐的位数由偏移量 (value)决定
将处理的数据 (10) 转化为10进制 (2)
所以结果为 2
无符号右移位 >>>
格式: num >>> value
意义: 将num右移value位置
运算规则: 丢弃最低为, 在最高位用0补位
注意: 无符号右移运算符 >>> 只是对32位和64位的值有意义
无符号右移 与 右移 的
共同点是:
都丢弃最低位
不同点是:
右移 在最高位 正数用0, 负数用1 补位
无符号右移 在最高位用0补位
& , ^ , | 的区别
& 运算符: 都是1, 结果才是1
^ 运算符: 一个1一个0, 结果是1
| 运算符: 只要有1, 结果是1
栗子: 3 & 1 3 ^ 1 3 | 1
解: 先将10进制的3和1 转化为2进制
3: 0000 0000 0000 0000 0000 0000 0000 0011
1: 0000 0000 0000 0000 0000 0000 0000 0001
3 & 1 : 0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
结果: 0000 0000 0000 0000 0000 0000 0000 0001 = 1
3 ^ 1 : 0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
结果: 0000 0000 0000 0000 0000 0000 0000 0010 = 2
3 | 1 : 0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001
结果: 0000 0000 0000 0000 0000 0000 0000 0011 = 3
结束
这就是本期的运算符讲解 感觉有用就点个赞吧 如果有错误或更好的方法评论区请多多指出 相互学习共同进步