位运算
来源:互联网 发布:艾泽拉斯数据库 人口 编辑:程序博客网 时间:2024/06/05 06:40
位运算
(& , | , ^ , ~ , >> , << , >>>)
位运算就是还成二进制来进行运算
把0当作false 把1当作true
&==》按位与
如果两个二进制位都是1(就是都是正确的),那么结果就是1,否则是0
如 int i=6 & 3; 输出的是2
0000 0110 ==》6
0000 0011 ==》3
-----------------------
0000 0010 ==》2
|==》按位或
如果两个二进制位都是0(都是错的),那么结果就是0,否则是1
如int j=6 | 3; 输出的是7
0000 0110 ==》6
0000 0011 ==》3
----------------------
0000 0111 ==》7
^==》按位异或
如果两个二进制是 1和0 或 0和1 (不同的就是真的),那么结果就是1,否则是0
如int x=6 ^ 3; 输出的是5
0000 0110 ==》6
0000 0011 ==》3
----------------------
0000 0101 ==》5
一个操作数A,对同一个操作数B连续异或两次,可以得到原本的操作数A
如 int p=17(这是操作数A) ^ 3(这是B); ===》18
p=p ^ 3; ===》17
~==》按位非
反码=补码-1 (正数+1)
原码=反码取反
最高为1或0不变(最高位是1时是负数,0为正数)
如 int z=~ 6;
0000 0110
1111 1001 ==》先按位非,就是1变0,0变1
---------------------------------
-1 ==》补码-1
1111 1000 ==》反码
---------------------------------
1000 0111 ==》反码取反 -7
如int c=~-6;
1000 0110
0111 1001 ==》取反
----------------------------
+1
0111 1010
----------------------------
0000 0101 ==》5
(总感觉负数按位非后 得出的结果是在原有的数字上去掉 “-” 减1,而正数是在原有的数字上加个 “-” 加1)
(以上的括号纯属猜的)
(& , | , ^ , ~ , >> , << , >>>)
位运算就是还成二进制来进行运算
把0当作false 把1当作true
&==》按位与
如果两个二进制位都是1(就是都是正确的),那么结果就是1,否则是0
如 int i=6 & 3; 输出的是2
0000 0110 ==》6
0000 0011 ==》3
-----------------------
0000 0010 ==》2
|==》按位或
如果两个二进制位都是0(都是错的),那么结果就是0,否则是1
如int j=6 | 3; 输出的是7
0000 0110 ==》6
0000 0011 ==》3
----------------------
0000 0111 ==》7
^==》按位异或
如果两个二进制是 1和0 或 0和1 (不同的就是真的),那么结果就是1,否则是0
如int x=6 ^ 3; 输出的是5
0000 0110 ==》6
0000 0011 ==》3
----------------------
0000 0101 ==》5
一个操作数A,对同一个操作数B连续异或两次,可以得到原本的操作数A
如 int p=17(这是操作数A) ^ 3(这是B); ===》18
p=p ^ 3; ===》17
~==》按位非
反码=补码-1 (正数+1)
原码=反码取反
最高为1或0不变(最高位是1时是负数,0为正数)
如 int z=~ 6;
0000 0110
1111 1001 ==》先按位非,就是1变0,0变1
---------------------------------
-1 ==》补码-1
1111 1000 ==》反码
---------------------------------
1000 0111 ==》反码取反 -7
如int c=~-6;
1000 0110
0111 1001 ==》取反
----------------------------
+1
0111 1010
----------------------------
0000 0101 ==》5
(总感觉负数按位非后 得出的结果是在原有的数字上去掉 “-” 减1,而正数是在原有的数字上加个 “-” 加1)
(以上的括号纯属猜的)
0 0
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 转:微信序列号生成器架构设计及演变(下)
- 防止表单重复提交订单
- C++基于TCP的网络应用程序的编写
- spring springmvc 将事物管理(@Transactional)分别加在 controller和service层
- C/C++中extern关键字详解与应用
- 位运算
- 关于事务的一些基本概念
- LeetCode(455)Assign Cookies
- 多态中的this参数
- 通过SSH实现 端口映射
- 设置隐藏标题栏
- Ubuntu中的符号
- Java中的接口是什么?
- python