类型说明符一般与int类型函数搭在一起的分为四个: long short signed unsigned
所占字节及其占位符
int 4个字节 %d long 8个字节 %ldlonglong 8个字节 %lld
short 2个字节 %d signed&unsigned &u
long long int ==long long
short int ==short
long/short +signed 可以一起使用
signed 最高位符号位,有符号,整数,0,负数 (写与不写没差)
unsigned 最高位不作符号位,无符号,正数
决定最高位要不要当符号位,取值范围会有所不同 unsigned 取值范围:0~2^32 -1 signed 取值范围:0~2^31 -1
6个位运算符
1>& 按位与
功能:只有对应两个二进制位1是,才为1,否则为0
9&5
int main()
{
/*按位与 &
1001
0101
------
0001
*/
printf(%d\n,9&5);
}
规律:
10111011 ----->当与上1可以保留原数值
10101101
-------------
10101001
10101110000
00000100000--------->当想知到那一位是什么书,与上1,即可知道。可获得某个精确的二进制数值
-----------------
1
2>按位或 | (不常用)
功能:只要对应的两个二进制位中有一个为一,则为一
3>按位异或 ^
功能:当对应的两个二进位相异(不相同时),结果为1,否则为0
规律:*自己与自己异或结果为0
*异或顺序可换 9^5^6 ==9^6^5
*任何数异或0,会等于自己
4>异或取反 ~
功能:把所有二进制位取反,符号位也取反
5>左移 <<
最高位会被舍弃,后面补0
价值:计算某个数的2次方(性能效率最高)
注意点:最高位舍弃会导致正负性改变
6>右移 >>
最高位符号位不变 一般会用符号位补齐
价值:计算某个数除于(2的n次方)