zoukankan      html  css  js  c++  java
  • ios进制

    //

    //  main.m

    //  LesssonScale

    //

    //  Created by laouhn on 15/7/23.

    //  Copyright (c) 2015年 池海涛. All rights reserved.

    //

    #import <Foundation/Foundation.h>

    int main(int argc, const char * argv[]) {

        /**

         *  以10为例,不同进制的表示方法

         十进制: 10

         二进制:0b10;

         八进制:010

         十六进制:1x10;

         int  a = 0b100;

         printf("%0x ",a);

         */

        /**

         *  如何输出进制数:

         %d ------十进制

         %o  ------八进制

         %0x  ------十六进制

         */

        /**

         *  位运算符 :按位 &,按位或 |,按位非 ~,按位异或 ^,左移<<,右移>>

         按位与 & :同1为1,否则为0,经常用于对某一位清零

         

         int a = 5 & 7;

         5--0101

         7--0111

           =0101=5

         printf("a = %d ", a);

         

         按位或 | : 同0为0,否则为1.经常用于保留某一位.

         int a = 5 | 7;  

         5--0101

         7--0111

           =0111

         printf("a = %d ", a);

         

         按位异或 ^相同为0,不同为1.

         int a = 5 ^ 7; 

         5--0101

         7--0111

           =0010 = 2

         printf("a = %d ", a);

         

         按位非 ~;

         char b = ~4;   //4--0000 0100, ~4=1111 1011 -1 ->1111 1010 ->1000 0101 =-5

         printf("b = %d ", b);

         

         如果是一个有符号位的数,这最高位代表符号位,1 代表 负数, 0 代表正数

         

         数据在内存中存储时,是以补码的形式存储的,正数的补码是正数的本身,负数的补码是

         绝对值 取反 加1.

         

         数据类型的取值范围:

         无符号:

            char    0-----255 (2的8次方减1)

            short   0-----2的16 - 1;

            int     0-----2的32 - 1;

         有符号:

            char    -2的7次方  ---  2的7次方 - 1

            short   -2的15次方 ---  2的15次方 - 1

            int     -2的31次方 ---  2的31次方 - 1

         左移 <<

         unsigned char d = 1;

         printf("左移后的结果%d ", d << 4 );

         

         右移 >>

         unsigned char e = 255;

         printf("右移后的结果%d ", e >> 1);

         

         //将100 高四位,低四位互换

         

         unsigned char number = 0b01100100;

         

         //1.先将 number 左移 4位

         unsigned char left = number << 4;

         //2.再将 number 右移 4位

         unsigned char right = number >> 4;

         

         //3.按位或

         

         unsigned char result = left | right;

         

         printf("result = %d ", result);

         

         将 10010010  奇偶位互换

         unsigned char num = 0b10010010;

         //清零操作使用 按位&, 保留的数位为1 ,清0 数的位为 0

         //1.将奇数位变成偶数位,左移一位

         

         unsigned char life = num << 1;

         

         //2.保留偶数位, 奇数位清0

         

         unsigned char clearJI = life & 0b10101010;

         

         //3.将偶数位变奇数位, 右移1位

         

         unsigned char rightNew = num >> 1;

         

         //4.保留奇数位,偶数位清0

         

         unsigned char clearOU = rightNew & 0b01010101;

         

         //5.按位或 |

         

         unsigned char resultNew = clearJI | clearOU;

         printf("resultNew = %d ", resultNew);

         栈区内存分配原则:由高到底分配,有低到高存取.

         

         int a = 10;

         

         printf("%p ",&a);

         

         int b = 10;

         

         printf("%p ",&b);

         //数组名代表数组的首地址,也就是数组的第一个元素的地址,是一个常量地址

         int a[4] = {9, 5, 2, 7};

         printf("%p ",&a[0]);

         printf("%p ",&a[1]);

         printf("%p ",&a[2]);

         printf("%p ",&a[3]);

         printf("%p ",a);

         */

        /**

         *  a=1010

            b=1100

            a=0110

            b=1010

         */

        //交换两个变量

        int a=10,b=12; //a=1010^b=1100;

        a=a^b; //a=0110  //找到a和b中不相同的位

        b=a^b; //b=1010  //原b和ab不相同异或 -> a =1010

        a=a^b; //a=1100  //

        printf("a = %d b = %d", a, b);

        

        

        return 0;

        

    }

    //
    //  main.m
    //  LesssonScale
    //
    //  Created by laouhn on 15/7/23.
    //  Copyright (c) 2015年 池海涛. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
        /**
         *  以10为例,不同进制的表示方法
         十进制: 10
         二进制:0b10;
         八进制:010
         十六进制:1x10;
         int  a = 0b100;
         printf("%0x
    ",a);
         */
        /**
         *  如何输出进制数:
         %d ------十进制
         %o  ------八进制
         %0x  ------十六进制
         */
        /**
         *  位运算符 :按位 &,按位或 |,按位非 ~,按位异或 ^,左移<<,右移>>
         按位与 & :同1为1,否则为0,经常用于对某一位清零
         
         int a = 5 & 7;
         5--0101
         7--0111
           =0101=5
         printf("a = %d
    ", a);
         
         按位或 | : 同0为0,否则为1.经常用于保留某一位.
         int a = 5 | 7;  
         5--0101
         7--0111
           =0111
         printf("a = %d
    ", a);
         
         按位异或 ^相同为0,不同为1.
         int a = 5 ^ 7; 
         5--0101
         7--0111
           =0010 = 2
         printf("a = %d
    ", a);
         
         按位非 ~;
         char b = ~4;   //4--0000 0100, ~4=1111 1011 -1 ->1111 1010 ->1000 0101 =-5
         printf("b = %d
    ", b);
         
         如果是一个有符号位的数,这最高位代表符号位,1 代表 负数, 0 代表正数
         
         数据在内存中存储时,是以补码的形式存储的,正数的补码是正数的本身,负数的补码是
         绝对值 取反 加1.
         
         数据类型的取值范围:
         无符号:
            char    0-----255 (2的8次方减1)
            short   0-----2的16 - 1;
            int     0-----2的32 - 1;
         有符号:
            char    -2的7次方  ---  2的7次方 - 1
            short   -2的15次方 ---  2的15次方 - 1
            int     -2的31次方 ---  2的31次方 - 1
         左移 <<
         unsigned char d = 1;
         printf("左移后的结果%d
    ", d << 4 );
         
         右移 >>
         unsigned char e = 255;
         printf("右移后的结果%d
    ", e >> 1);
         
         //将100 高四位,低四位互换
         
         unsigned char number = 0b01100100;
         
         //1.先将 number 左移 4位
         unsigned char left = number << 4;
         //2.再将 number 右移 4位
         unsigned char right = number >> 4;
         
         //3.按位或
         
         unsigned char result = left | right;
         
         printf("result = %d
    ", result);
         
         将 10010010  奇偶位互换
         unsigned char num = 0b10010010;
         //清零操作使用 按位&, 保留的数位为1 ,清0 数的位为 0
         //1.将奇数位变成偶数位,左移一位
         
         unsigned char life = num << 1;
         
         //2.保留偶数位, 奇数位清0
         
         unsigned char clearJI = life & 0b10101010;
         
         //3.将偶数位变奇数位, 右移1位
         
         unsigned char rightNew = num >> 1;
         
         //4.保留奇数位,偶数位清0
         
         unsigned char clearOU = rightNew & 0b01010101;
         
         //5.按位或 |
         
         unsigned char resultNew = clearJI | clearOU;
         printf("resultNew = %d 
    ", resultNew);
         栈区内存分配原则:由高到底分配,有低到高存取.
         
         int a = 10;
         
         printf("%p
    ",&a);
         
         int b = 10;
         
         printf("%p
    ",&b);
         //数组名代表数组的首地址,也就是数组的第一个元素的地址,是一个常量地址
         int a[4] = {9, 5, 2, 7};
         printf("%p
    ",&a[0]);
         printf("%p
    ",&a[1]);
         printf("%p
    ",&a[2]);
         printf("%p
    ",&a[3]);
         printf("%p
    ",a);
         */
        /**
         *  a=1010
            b=1100
            a=0110
            b=1010
         */
        //交换两个变量
        int a=10,b=12; //a=1010^b=1100;
        a=a^b; //a=0110  //找到a和b中不相同的位
        b=a^b; //b=1010  //原b和ab不相同异或 -> a =1010
        a=a^b; //a=1100  //
        printf("a = %d
    b = %d", a, b);
    
    
        
        
        return 0;
        
    }
  • 相关阅读:
    CSS 设置table下tbody滚动条
    PHP图片上传程序(完整版)
    Nginx无法监听虚拟VIP的问题报:99: Cannot assign requested address
    当切换用户时出现-bash-4.1$
    mysql 启动报错Host name could not be resolved解决办法
    设置博客园标题样式
    五步解决windows系统慢的问题
    Centos7下yum安装软件报错解决办法
    windows下使用mysqlbinlog做数据恢复时出现mysqlbinlog: File 'D:MariaDB' not found (Errcode: 2)
    Microsoft SQL Server Management Studio连接后报“ viewInfo (Microsoft.SqlServer.Management.SqlStudio.Expl”
  • 原文地址:https://www.cnblogs.com/wohaoxue/p/4672599.html
Copyright © 2011-2022 走看看