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];

你可能感兴趣的:(c语言学习笔记九)