什么是位计算 ?
位计算首先是以 一个数的二进制形式进行计算,判断然后返回每一位得出的结果
一、与(&)计算符
位与:两个操作数 同位上的数 都为 1 才为1 其他情况都为0
例如:整数 a = 15 整数 b = 127
计算:(a & b)
15 的二进制位:0000 1111
127 的二进制为:0111 1111
即:(a & b) = 15
二、或(|) 计算符
或(|)计算:两个操作数 同位上的数 只要有一个为1 就为1 其余的情况都为0
例如:整数 b = 127 整数 c = 128
计算:(b | c)
127 的二进制位:0111 1111
128 的二进制位:1000 0000
即:(b | c) = 255
三、非(~)运算符
非运算:对应位 有一位 为1 就返回0 对应为上有一位 为0 就返回1 (实际上的意义就是 反转 1>0 0 >1)
例如:整数 d = 1
计算:(~d)
十进制 1 的二进制表示为:
0000 0001
每位都取反为:
1111 1110
这是内存中的保存形式。我们读取的十进制是根据原码来读取,而在内存中,数值都是以二 进制补码形式存储的。正数的补码和原码一样,负数的补码得到过程:原码 转 反码 再转 补码
然后计算取反后的补码,其真值就是结果。
四、异或(^)
异或(^)运算符:对应位上 相同就为0 不同的就为1
例如:整数 e = 2 整数 f= 3
计算:(e ^ f)
2 的二进制位:0000 0010
3 的二进制位:0000 0011
即:(e ^ f) = 1
五、移位运算符(<<,>>)
移位运算也算做算数表达式 其值也是算术值
左移运算符是将二进制数 位向左边移动 左边移动的位 一一舍去 右边空出来的位 用0 补上
右移运算符是将二进制数 位向右边移动 右边移动的位 一一舍去 左边空出来的位 用0 补上
5.1左移运算符
<<:将二进制对应的位数 向左移动 规定的位数 左边的舍去 右边空余的位数 补 0
例如:整数 g = 10
计算:g<<2
10 的二进制位:0000 1010
数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
5.2 右移运算符
>>:将二进制数 位数从最右边开始 依次删除 指定的位数 左边空出来的 依次补 0 并返回
借鉴于:为了熟悉 自己手打并加入了一些自己的看法