了解原码、反码、补码的相关知识和位运算符的使用
前言
了解原码、反码、补码的相关知识和位运算符的使用。
一、原码、反码、补码
(1)原码
1)原码就是将一个整数转换成它的二进制形式。
2)原码的第一位表示的是符号位,正数为 0,负数为 1.
如: int a = 4;其原码为:00000000 00000000 00000000 00000100
int b = -12; 其原码为:10000000 00000000 00000000 00001100
3)正数的原码、补码、反码一样。
(2)反码
1)负数的反码为 其原码符号位不变,其他的数值为取反。0 => 1 , 1 => 0
2)例如:int c = -15;
其原码为:10000000 00000000 00000000 00001111
其反码为原码符号位不变,其余位置取反:11111111 11111111 11111111 11110000
3)正数的原码、补码、反码一样。
(3)补码
1)负数的补码为 其反码+1。
2)例如:int d = -9
其原码为:10000000 00000000 00000000 00001001
其反码为:11111111 11111111 11111111 11110110
其补码为:11111111 11111111 11111111 11110111
3)正数的原码、补码、反码一样。
(4)细节
1)计算机在运算的时候,都是以补码的形式运算的。
2)0的反码和补码都是0.
3)当我们看运行结果时,要看它的原码。
二、位运算
(1)位运算符分类
位运算符总共分为七类,都包括:& 、| 、^ 、~ 、>> 、<< 、>>>
(2)位运算符作用
1)按位与&:符号两边的运算结果全为1结果为1,否则为0。
2)按位或|:符号两边的运算结果有一个为1结果就为1,否则为0。
3)按位异或^:符号两边的运算结果一个为1一个为0结果就为1,否则为0。
4)按位取反~:符号两边的运算结果取反,1 => 0 , 0 => 1。
5)算数右移>>:低位溢出,符号位不改变,并且用符号位补溢出的高位。
6)算数左移>>:符号位不变,低位补零。
7)无符号右移(逻辑右移):低位溢出,高位补0。
(3)位运算符演示
10 & 2 = 1;
0 & 100 = 0;
1 | 0 = 1;
0 | 0 = 0;
20 ^ 0 = 1;
23 ^ 11 = 0;
~-3 = 0;
~0 = 1;
int a=1>>2; //1 => 00000001 => 00000000
int c=1<<2; //1 => 00000001 => 00000100
- 点赞
- 收藏
- 关注作者
评论(0)