基础知识
二进制中最高位为符号位。
例如一个字节的1
原码=反码=补码 0·000 0001
一个字节的-1
原码 1000 0001
反码(除符号位外1变为0 0变为1) 1111 1110
补码(反码加1) 1111 1111
计算机的计算是以二进制的补码来进行运算的
十进制转r进制 除r取余直到商为0 余数倒序排列。
r进制转十进制 二进制 10011 转十进制 1乘2的0次方+1乘2的1次方+0乘2的2次方…
n进制转k进制 先转为10进制再转为k进制
(&)按位与
两个数里的位相同则保持不变,相反则为0,简单来说,就是除了两个位为1的时候保持为1,其它情况都为0。
例如 1111 0000 & 0100 1110 = 0100 0000
(|)按位或
两个数里的位只要有一个为1则为1,其余为0。
例如 1111 0000 | 0100 1110 = 1111 1110
(^)按位异或
两个数里的位不相同为1,其余为0。
1111 0000 ^ 0100 1110 = 1011 1110
(~)按位取反
1变成0,0变成1
例如 ~ 1111 0000 = 0000 1111
(<<)左移
丢弃最高位低位补0
如 1000 0001 << 1 =0000 00010
超过最高位取模移动
数学意义 左移n位相当于该数乘2的n次方
(>>)右移
符号位不变 高位补符号位,丢弃最低位
1000 0001 >> 1 =1100 0000
数学意义 左移n位相当于该数除以2的n次方
(>>>)无符号右移
高位补0,丢弃最低位
常用姿势
设标志位
|
|