1.简述网站建设流程,做设计找素材的+网站有哪些,咋样做网站快照,微信小程序无代码开发平台前段时间刷到了力扣关于位运算的题#xff0c;这里浅浅记录一下#xff01;
1. 逻辑位运算
1.1 与
#xff1a;按位与进行二进制计算#xff0c;规则是同为1则为1#xff0c;不同为0#xff0c;具体如下#xff1a;
000, 010, 100, 1这里浅浅记录一下
1. 逻辑位运算
1.1 与
按位与进行二进制计算规则是同为1则为1不同为0具体如下
000, 010, 100, 111要对所有的条件都进行判断操作如a 1 2结果a 0也相当于求每位的进位数如9 1 1。 注意 还有一种相似的与逻辑运算符 ,称为逻辑与也称短路与只要第一个条件不满足后面条件就不再判断如a 1 0 2 1结果a false。
1.2 或 |
|按位或二进制计算规则是同为0则为0否则为1具体如下
000, 011, 111, 111要对所有的条件都进行判断如a 结果a 7。 注意 还有一种相似的或逻辑运算符 ||称为逻辑或也称短路或仅需要其中一个条件满足即可其它条件就不再判断如 a 2 0 || 3 1,结果a true。
1.3 非
****按位进行取反进行二进制计算规则是1取反为00取反为1如37 -38具体计算如下
在Java中int 占四个字节一个字节占8bit位即32位32bit.
37转为二进制是:100101.
计算机保存的都是补码37是正数他的原码反码补码都是一样的
37在计算机中的补码
00000000 00000000 00000000 00100101
~37的计算
A.求37在计算中补码的相反码不是反码这里还是补码只是相反的补码
11111111 11111111 11111111 11011010
B将相反的补码转换为原码由于相反码的第一个位是1这个数是负数负数的补码转反码 减一-1
11111111 11111111 11111111 11011010 -111111111 11111111 11111111 11011001
反码转原码符号位不变其他数相反
10000000 00000000 00000000 00100110
二进制100110十进制38
符号位不变-38注意 还有一种相似的运算符 称为逻辑非对当前结果取反即可具体如下:
!1 0, !0 1如 !false true, !true false。
1.4 异或
符号为^, 规则是相同为0不同为1具体如下
1^0 1 , 1^1 0 , 0^1 1 , 0^0 0相当于无进位的求和不考虑进位如 1 ^ 2 3即001 ^ 010 01119 ^ 1 10。
2. 移位运算符
2.1左移运算符
运算规则是按二进制形式把所有的数字向左移动对应的位数高位移出舍弃低位的空位补零。若移动的位数超过了该类型的最大位数那么编译器会对移动的位数取模。如对int型移动33位实际上只移动了1位。语法格式需要移位的数字number 移位的次数如5 1,相当于5乘以2的1次幂结果为10。数学意义在数字没有溢出的前提下对于正数和负数左移一位都相当于乘以2的1次方左移n位就相当于乘以2的n次方。
2.2 右移运算符
运算规则是按二进制形式把所有的数字向右移动对应位移位数低位移出(舍弃)高位的空位补符号位即正数补零负数补1。若移动的位数超过了该类型的最大位数那么编译器会对移动的位数取模。如对int型移动33位实际上只移动了1位。语法格式需要移位的数字number 移位的次数如4 1,相当于4乘以2的1次幂结果为2。数学意义右移一位相当于除2右移n位相当于除以2的n次方。
2.3 无符号右移
运算规则是按二进制形式把所有的数字向右移动对应位移位数低位移出(舍弃)高位的空位补符号位0忽略了符号位扩展即不管是正数还是负数都补0。语法格式需要移位的数字number 移位的次数。只是对32位和64位的值有意义。
3. 小知识
3.1 判断某二进制数n最低右位1或者0
若 n 1 0,则 n二进制数n最右一位 为 0若 n 1 1,则 n二进制数n最右一位 为 1 可用于题目判断所给数字转换为二进制数中1的个数
3.2 二进制数n最低右位1变为0
n(n−1): 二进制数n最右边为1n-1最右边则为0n1 :直接对二进制数n进行无符号右移1位
3.3 不使用运算符求两数和
先用异或运算进行无进位求和,即 a^b再用与运算进行处理每次进位并左移一位即(a b) 1;两者用异或运算求和即(a^b) ^ ((a b) 1)重复上述过程直到进位为0即可