5、位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码
来源:互联网 发布:linux select函数 编辑:程序博客网 时间:2024/05/04 14:29
位运算符的基本规则
1,位运算符都是针对整数的二进制数字形式而进行的。
2,按位与运算基本规则(规则表):
1 & 1 ==> 1
1 & 0 ==> 0
0 & 1 ==> 0
0 & 0 ==> 0;
3, 按位或运算基本规则
1 | 1 ==> 1;
1 | 0 ==> 1;
0 | 1 ==> 1
0 | 0 ==> 0
4,按位非运算:
~ 1 ==> 0
~ 0 ==> 1
5,按位异或运算:
1 ^ 1 ==> 0
0 ^ 0 ==> 0
1 ^ 0 ==> 1
0 ^ 1 ==> 1
规律:相同就是0,不同就是1
按位与运算:&
形式:A & B; //A和B都是数字,其实是常规的10进制数字,但内部会按二进制进行计算
含义:将A和B的二进制形式的每一个位上的二进制数字进行按位与(&)运算之后的结果。
说明:一个数字的二进制形式通常是32位的0和1的组合,也可能是64位,但未了说明问题,我们通常只用8位。
举例:
$r1 = 9 & 13; //9的二进制是“1001”,13的二进制是“1101”
结果是“00001001”,即9
按位或运算:
形式:A | B; //A和B都是数字,其实是常规的10进制数字,但内部会按二进制进行计算
含义:将A和B的二进制形式的每一个位上的二进制数字进行按位或(|)运算之后的结果。
举例:
$r1 = 18 | 10; //18的二进制是“10010”,23的二进制是“1010”
结果是“00011010”,即26
按位左移运算:<<
形式: A << n; //A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
含义:将数字A的二进制形式的每一个位上的数字往左边移动指定的位数n,则最左边的n位移出去了就不管了,最右边空出来的n位,补0就可以。
举例:
$r1 = 9 << 2; //9的二进制形式为:1001
结果是:32 + 4 = 36
按位右移运算:>>
形式: A >> n; //A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
含义:将数字A的二进制形式的每一个位上的数字往右边移动指定的位数n,则最右边的n位移出去了就不管了,最左边空出来的n位,补0就可以(对正数,实际是补符号位)。
举例:
$r1 = 9 >> 2; //9的二进制形式为:1001
结果就是:2
按位非:
将一个数字的二进制形的每一个二进制数字取反所得到的结果
按位异或:
将2个整数的二进制形式的每一个对应数字进行异或运算之后的结果。
原码,反码,补码介绍
原码:就是“原来的二进制码”,其实就是我们可以理解的按10进制转换为二进制之后得到的一个字符码。
原码在数学上都是可以理解的。
但在实际的计算机的运行过程中,却常常不用原码,所以就有反码,补码的问题。
在此基础上上,规则:一个二进制数字的第一个位是符号位,0表示正数,1表示负数。
举例(都以8位为例):
7: 00000111
-7: 10000111
反码:
正数的反码是其本身。
负数的反码,就是将原码的非符号部分,每一位取反。
举例:
7: 00000111
-7: 11111000
补码:
正数的补码是其本身。
负数的反码,符号位不变,其余每一位取反之后,整体加1(即反码加1)
举例:
7: 00000111
-7: 11111001
- 5、位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码
- 原码,补码,反码与位运算
- 浅谈按位与,按位或,左移与右移运算符
- C语言基础 按位运算符 按位与,或,非,左移,右移
- 位运算小结(按位与、按位或、按位异或、取反、左移、右移)
- 位运算小结(按位与、按位或、按位异或、取反、左移、右移)
- 位运算和原码,反码,补码
- 原码反码补码以及移位按位与或异或等位操作的实例
- 位运算: 与”&、“非”~、“或||”、“异或”^ ;原码 反码 补码的相互转化
- Java基本数据类型与位运算、原码&补码&反码
- 位运算--与,或,异或,左移,右移
- 原码, 反码, 补码 详解以及负数的按位与运算
- 原码补码反码以及位运算符
- 位运算符及原码、反码和补码
- 按位与、按位或、按位异或、左移、右移运算符的简单介绍(部分二进制运算符的简单介绍)
- C语言位运算符:与、或、异或、取反、左移和右移
- C语言位运算符:与、或、异或、取反、左移和右移
- C语言位运算符:与、或、异或、取反、左移和右移
- Fragment 无法在Activity.onSaveInstanceState方法后commit
- android 开启service和绑定service
- 关于强制类型转换——《C专家编程》笔记
- SQL函数用法大全
- 串行通讯与并行通讯区别
- 5、位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码
- 【2012-12】【斐波那契循环节】Evil Teacher
- 线性莫队算法 BZOJ 2038 小Z的袜子
- M序列
- Nginx 配置解析
- Linux监控系统开发详解(二)----make menuconfig过程详解
- codeforces #500B# New Year Permutation
- 课程设计报告 题目4
- 求二叉树中节点的最大距离