(理论贴)进制原码补码反码 (持续更新~~)
原码:二进制表示 形式:
ex:+1:00000001;
-1:10000001;
反码:正数的原码=反码;负数的补码为原码除符号位按位取反:
ex: -3:10000011--->11111100;
补码:正数的原码=反码-补码;
负数的补码为原码除符号位按位取反+1;
10000000这个补码表示-128;
n位补码表示范围为-2^(n-1)--2^(n-1)-1;
PS:补码转原码:
若为正数补码即为原码;
若为负数则求此补码的原码;
例如:1111 1111 -->1000 0000-->1000 0001-->-1;
进制操作符:
左移运算符(<<):
左移一位,低位空出补0,高位左移溢出舍弃此高位;
例如: 127 0111 1111;
127<< 1111 1110-->1000 0001-->1000 0010--> -2;
左移运算符相当于*2操作,(比*2操作快)
右移运算符(>>):
类似于左移 ;
与运算(&):
1.&0 与0相与可清零;
2.&1 与1 相与可保留原值;
ex: 255-->1111 1111---将某Int型数和其&运算可保留后八位,具体应用可详见 HDU - 5980--J - Find Small A 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5980
常可用于判断奇偶 x&1=0则为偶数,x&1=1则为奇数;
或运算(|):
1.与0相或可保留原值;
2.与1相或可将此位设为1;
异或运算(^):
取反运算(~):