首页 > 代码库 > C 语言 整理8

C 语言 整理8

// int  a  = 010 + 10 ;  //0开头是八进制.
    //0b 开头是二进制
    //0x 开头是十六进制
   // printf("%d " ,a ); //%d 打印十进制整数.
    //%x 打印十六进制. (字母小写)   %X  打印十六进制 (字母大写)
    // %o 打印八进制
    //一个字节 又是八位二进制数.
    
    
    //位运算符
    //按位与 & (同为1 , 则为1 , 否则 为0 );
    
    // 按位或 |  (同为 0 , 则为 0 , 否则 为 1 );
    
    //按位非  ~
    
    //按位异或  ^ (相同为 0  ,不同为 1);
    
    // 左移 运算符  左移一位相对于乘 2 ;
    // 右移 运算符  右移一位相对于除 2 ;
    
    //二进制的高四位 和第四位互换.
    unsigned  char a = 130 ;
    unsigned char  left = 0;  //存储左移之后的结果
    unsigned char  right =  0 ; //存储右移之后的结果
    
    left  = a << 4 ;
    right = a >> 4 ;
    
    printf("%d" , left | right) ;
    
    
    //二进制数的奇偶位互换 .
    
    //1,偶~奇 (右移一位)
    // 保留奇数位,将偶数位清零 .  & 01010101
    
    //2,奇 ~ 偶 (左移一位) ;
    //保留偶数位 , 将奇数位 清零 & 10101010
    
    
    /**
    unsigned char b = 0b10110111;
    
    unsigned char left  =  0 ; //存储左移后的结果
    unsigned char right = 0 ; //存储右移后的结果
    
    
    //如果想做清零操作使用 按位与 , 清零位为 0  ,保留位为1
    //(1) 先左移一位
    
   
     *
        left = b << 1;
    //(2) 保存偶数位 ,将奇数位清零
    left =  left & 0b10101010;
    //(3)右移一位
    right = b >> 1 ;
    //(4)保留偶数位 , 将奇数位 清零
    right = right & 0b01010101 ;
    //(5) 按位或
    
     
    printf("%d\n" , left | right);
    
    */
    
    //栈区内存分配原则:从高到低分配,从低到高 存取
    // 地址 : 内存单元的编号.
//    
//    int a = 10 ;
//    int b = 5 ;
//    printf("%p  %p\n",&a ,&b);

//    int a [5] = {1,2,3,4,5};
//    
//    printf("%p \n%p \n%p \n%p \n%p \n %p \n" ,&a[0], &a[1] ,&a[2] ,&a[3] ,&a[4] ,a);
    
   // printf("%d \n " , 3 ^ 5);