操作符
左右移操作符
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int a = 2; //a = 0000 0000 0000 0000 0000 0000 0000 0010
int b = a << 1; //b = 0000 0000 0000 0000 0000 0000 0000 0100
printf("%d \n",b);
return 0;
}
查看结果
4
位操作符
& 按位与
| 按位或
^ 按位异或
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
单目操作符(只有一个操作数的)
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 数据类型的长度(字节为单位)
~ 对一个数的二进制按位取反
--
++
* 间接访问操作符
(void) 强制类型转换
原码:
- 假设机器字长为n,原码(自然二进制码)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
反码:
- 反码通常是用来由原码求补码或者由补码求原码的过渡码。在原码的基础上,正数的补码反码是其本身,负数的反码是符号位保持不变,其余位取反。
补码:
- 正数的补码是其本身,负数的补码是在其反码的基础上+1。
比如数字6:
- 原码:00000000 00000000 00000000 00000110
- 反码:00000000 00000000 00000000 00000110
- 补码:00000000 00000000 00000000 00000110
比如数字-6:
- 原码:10000000 00000000 00000000 00000110
- 反码:11111111 11111111 11111111 11111001 (符号不动 其余取反)
- 补码:11111111 11111111 11111111 11111010 (反码+1)