运算符"/>
学渣笔记——位运算符
现在也说不上来当初是我没听课还是老师没讲,后来再看发现对位运算符真的一点印象都没有,书上略讲了,可我就是强迫症必须大概弄清楚这是什么,以下对个位运算符的描述算是我查完以后的举例总结
一些前话
- 除了“按位与”和“按位或”运算,其他位运算符只能处理整数
- 位运算符是完全对位方面的操作
- 整型数据在内存中以二进制形式表示,左边最高位是符号位,最高位是0表示正数,最高位是1表示负数。
负数用补码表示,如下(int型):
11111111 11111111 11111111 11111000 表示的是-8
00000000 00000000 00000000 00001000 表示的是8
&:“按位与”运算
写出二进制数,都为1则仍是1,其他情况为0
(以八位为例)如:
1:00000001
2:00000010
3:00000011
则 1 & 2 = 00000000 = 0;1 & 3 = 00000001 = 1
|:“按位或”运算
同理,写出二进制数,都为0则仍是0,其他情况为1
不再举例说明
~:“按位取反”运算
若0,结果写作1;若1,结果写作0
^:“按位异或”运算
若运算数相同(都为0或都为1),则结果写作0;不相同,结果写作1
举例:
4:00000100
7:00000111
4 ^ 7 = 00000011 = 3
<<:“左移位”运算符
写出二进制数,向左移位,低位补0
举例:计算2 << 2
1)2:00000010
2)左移两位:000010__
3)低位补0:00001000
得出:2 << 2 = 00001000 = 8
也可通过公式计算,如:a << b = a * 2 b
则:2 << 2 = 2 * 22 = 8
>>:“右移位”运算符
同理,不过是向右移位,也可当做舍弃右侧位。>>计算带符号,如果是正数,则高位补0,;负数则高位补1。
公式为:a / 2b
>>>:“右移位”运算符(不带符号)
和>>运算规则相似,计算不带符号,不论正负,高位都补0。
更多推荐
学渣笔记——位运算符
发布评论