c语言学习笔记九

运算符

逻辑运算
XOR 的真值表
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0


NAND 的真值表
A B A NAND B
0 0 1
0 1 1
1 0 1
1 1 0



NOR 的真值表
A B A NOR B
0 0 1
0 1 0
1 0 0
1 1 0


进制间的转换


二转十
1011=1*2(3)+0*2(2)+1*2(1)+1*2(0)
小数
.1011=1*2(-1)+0*2(-2)+1*2(-3)+1*2(-4)


整数的加减运算
8位表示正负数,最高位为符号位,0表示正,1表示负(-127~127)
逻辑:符号位相同,后7位相加,符号位不变,超出为溢出
符号位不同,后7位大者减小者,符号位和大数相同

浮点数
表示形式: 10*10(0)=0.1*10(2)=(01000)*2(0)=(0.01000)*2(5)
浮点数的格式为:
sign(1bit) exponent(5bit) significand(8bit)
故:
0 00101( 5次幂) 01000 000




运算符


位运算
移位运算
左移一位相当于*2,如果左移位数大于32,结果为undefine
右移一位相当于/2,小数部分截掉,当操作数为有符号时:
如果是正数,高位移入0,
如果是负数,x86平台最高位移入1,保持符
号位


掩码
0x0000ff00 对32位整数的8~15位进行操作
取出
示例代码:
unsigned int a,b,mask=0x0000ff00;
a=0x12345678;
b=(a&mask)>>8;
清零
unsigned int a,b,mask=0x0000ff00;
a=0x12345678;
b=a&~mask;
置1
unsigned int a,b,mask=0x0000ff00;
a=0x12345678;
b=a|mask;


异或运算
异或自已为0
和0作异或值不变
奇偶校验
交换两个数的值:a=a^b; b=b^a; a=a^b;




复合运算符
+= -= %= <<= >>= &= !=
三目条件运算符:
表达式1?表达式2:表达式3;
逗号运算符

sizeof运算符号
示例代码:
int nums[10];
printf("%d\n",sizeof nums/siaeof a[0]);




typedef类型声明:
用于给一个类型取一个新名字
示例代码:
typedef int int_array[12];
int_array a;
相当于:int a[12];

你可能感兴趣的:(学习笔记)