整数的2进制判断表示方法:原码,反码,补码
正数的:原码=反码=补码(符号位第一位是0开头的)
负数的:反码=原码的按位取反,补码=反码+1,它的反码也=补码+1(符号位开头第一位是以1开头的)
原码:直接将数值按照正负数,翻译成为二进制得到的就是原码
例如:2的原码就是:00000000000000000000000000000010(一个整数占四个字节也即是32位)
-2的原码就是:10000000000000000000000000000010
-2的反码就是:11111111111111111111111111111101
-2的补码就是:11111111111111111111111111111110
移位操作符:
移位操作符只适用于整数(二进制的移位)
“<<":左移操作符
左边抛弃,右边补0
”>>":右移操作符:
1:逻辑右移:右边丢弃,左边补0
2:算术右移:右边丢弃,左边用该原值的符号位填充(例如是负数就用他的符号位1填充)
注意:移位的时候不要移动负数位(这个标准是未定义的)
例如:(a<<-3)是不符合正确移位的
位操作符:
移动的是存储在内存中的二进制数
"&":按位与(二进制)
用于比较两个数值的二进制按照位置进行排列:有0为0,无0为1.
例如 a://000000000000000000000000010010
b://000000000000000000000000100010
a&b //000000000000000000000000000010
特点:n&1=1或n&1=0,来判断是否最后移位是1
"|":按位或
两个数值的二进制按照数值位置进行排列:有1为1,无1为0
例如: a://000000000000000000000000010010
b://000000000000000000000000010100
a|b://000000000000000000000000010110
"^":按位异或
两个数值的二进制按照数值位置进行排列:相同为0,不同为1.
例如: a://000000000000000000000000010010
b://000000000000000000000000010100
a|b://000000000000000000000000000110
特点:3^3=0 ,0^3=3
“^"操作符是支持交换律的
"~":按位取反
将一个数值的二进制进行取反
例如: a://000000000000000000000000010010
~a://11111111111111111111111111101101
结构成员访问操作符:
结构体有很多种但是并不一定是完全满足需要的
描述学生的年龄,姓名,身高,体重……
结构的声明:
struct tag//自定义
{
membe-list //成员列表
};
variable-list //变量列表
“.”操作符
//结构体变量.结构体成员变量