进制
二进制表示:以0b或0B开头
八进制表示:以0开头
十六进制表示:以0x或0X开头
各进制输出:
%o :八进制输出
%x :十六进制输出
负数与取值范围
负数在计算机中表示时,将最高位作为符号位,1表示负数,0表示正数
n位有符号数值范围-2n-1~2n-1-1
short和long整型
C语言中short和long只作为int数据类型的修饰符(与java中long、short区别)
long int a可以略写为 long a;(short同样适用)
注意:在修饰int类型时,还有一种修饰方式为long long int。此类型的字节数仍为8个,作用在于当编译器为32bit位时,int此时表示2个字节,这时long int表示4个字节,long long int就表示8个字节
signed和unsigned
signed:表示有符号数值。C语言中int类型默认即为有符号数值
unsigned:表示无符号数值
同样可以略写为 signed a;unsigned b
输出格式:
unsigned:u%
signded:d%
注:此两种修饰符可以和long、short修饰符混合使用
位运算
与运算-按位与:&
或运算-按位或:|
异或运算-按位异或:^
取反运算-按位取反:~
位运算法则
1) 与运算:两个位上的数都为1时才为1(全1才1,一0则0)
2) 或运算:两个位上的数有一个为1即为1(全0才0,一1即1)
3) 异或运算:两个位上的数相同时为0,不同时为1
- 相同数值进行异或结果一定为0
- 可以交换 如:9^5^6=9^6^5
- 任何数值跟0进行异或,结果还是原来的数值
4) 取反运算:0变1,1变0
5) 左移和右移
- 左移(<<):对一个数左移n位等同于该数乘以(*)2的n次方(注:左移时会导致该数符号丢失,低位补0)
int a=8; a=a<<1;//表示a左移1位,左移后a=16
- 右移(>>):对一个数右移n位等同于该数除以(/)2的n次方(注:右移时高位以该数符号位补齐)
int a=8; a=a>>1;//表示a右移1位,左移后a=4
- 左移右移运算的优先级仅低于算术运算的优先级
Char类型使用注意
1) char符号单引号’ ’只能括单字节的字符
2) 当int类型的值在-128~127之间时,可以存储在char类型中(字符的本质为整数,在内存中存储char类型时还是用二进制数存储,只是输出是用格式符控制遵循ACII码输出相应字符)