• 进制转换


    //  main.c
    
    //  进制转换
    
    //
    
    //  Created by zhangxueming on 15/5/26.
    
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    
    //
    
     
    
    #include <stdio.h>
    
    //进制转换
    
    //十进制: 0 1 2 3 4 5 6 7 8 9  10 11 ... 99 100...
    
    //十进制是人类最自然的语言
    
     
    
    //计算机
    
    //二进制: 0 1
    
    //有高低电平  约定高点平为 1 低电平为0
    
    //10100101010
    
     
    
    //5+6
    
    //机器语言
    
    //1010010101010
    
    //1010101010010
    
    //1010101010011
    
     
    
    //5+6
    
    //汇编语言
    
    //movl $5 %rbp(-8)
    
    //movl $6 %rbp(-12)
    
    //movl %rbp(-8) %eax
    
    //addl %rbp(-12) %eax
    
    //movl %eax  %esi
    
     
    
    //C语言
    
    //int sum = 0;
    
    //int a= 5;
    
    //int b = 6;
    
    //sum = a+b;
    
    //简洁 执行效率高 健壮性强
    
     
    
    //objective C  java  C++
    
     
    
    //十进制转十进制
    
    //123 = 123
    
    //123 / 10 ---3 = 3*10^0
    
    //12  / 10 ---2 = 2*10^1
    
    //1   / 10 ---1 = 1*10^2
    
    //0
    
     
    
    //十进制: 0 1  2   3   4    5    6    7     8     9
    
    //二进制: 0 1  10  11  100  101  110  111   1000  1001
    
     
    
    //除2倒序取余数
    
    //123
    
    //123 / 2 ---> 1
    
    //61  / 2 ---> 1
    
    //30  / 2 ---> 0
    
    //15  / 2 ---> 1
    
    //7   / 2 ---> 1
    
    //3   / 2 ---> 1
    
    //1   / 2 ---> 1
    
    //0
    
    //0b是二进制数的前缀
    
    //123 = 0b1111011 = 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3+0*2^2 + 1*2^1 + 1*2^0 = 64 + 32 + 16 + 8 + 0 + 2 + 1 = 123
    
     
    
    //int main(int argc, const char * argv[]) {
    
    //    printf("%d
    ", 0b1111011);
    
    //    return 0;
    
    //}
    
     
    
    //96 245 78
    
     
    
    //int main(int argc, const char *argv[])
    
    //{
    
    //    int num;
    
    //    scanf("%d", &num);
    
    //    int bin[32]={};
    
    //    int i=0;
    
    //    while (num) {
    
    //        bin[i++]=num%2;
    
    //        num/=2;
    
    //    }
    
    //    printf("0b");
    
    //    for (i--; i>=0; i--) {
    
    //        printf("%d", bin[i]);
    
    //    }
    
    //    printf("
    ");
    
    //    return 0;
    
    //}
    
    //二进制转十进制: 把每一位二进制代表的数值和相加
    
    //0b110101 = 1*2^5 + 1*2^4 + 0 + 1*2^2 + 0 + 1 = 53
    
     
    
    //八进制: 0 1 2 3 4 5 6 7
    
    //"逢八进一"
    
    //八进制前缀 0
    
    //10  11 12 13 14 15 16 17 20  21 22 23 ... 77 100 ... 101
    
     
    
    //int main(int argc,const char *argv[])
    
    //{
    
    //    printf("%d
    ", 010);//%d是打印十进制数的占位符
    
    //    printf("0%o
    ", 14);//%o是打印八进制数的占位符
    
    //    return 0;
    
    //}
    
     
    
    //八进制转二进制
    
    //将八进制数的每一位分别用三位二进制数替换
    
    //"421"
    
    //  0   1   2   3   4   5   6   7
    
    //  000 001 010 011 100 101 110 111
    
    //016 = 0b1110
    
     
    
    //二进制数转八进制数
    
    //从低位开始每三位为一组, 高位不足三位补0, 每三位二进制数分别用一位八进制数替换
    
    //0b 011 110 100 101 010 011 010 010 = 036452322
    
     
    
    //十六机制数:
    
    //"8421"
    
    //0    1    2    3    4    5    6    7
    
    //0000 0001 0010 0011 0100 0101 0110 0111
    
    //8    9    a/A   b/B   c/C   d/D  e/E   f/F
    
    //1000 1001 1010  1011  1100  1101 1110  1111
    
     
    
    //"逢十六进一"
    
    //十六进制转二进制
    
    //0x是十六进制数的前缀
    
    //分别用四位二进制数替换每一位十六进制数
    
    //0x1ff = 0b111111111
    
    //0xabc129 = 0b101010111100000100101001
    
     
    
    //int main(int argc, const char *argv[])
    
    //{
    
    //    printf("%d
    ", 0x20);
    
    //    printf("0x%x
    ", 120);//%x是打印十六进制数的占位符
    
    //    
    
    //    return 0;
    
    //}
    
     
    
    //二进制转十六进制
    
    //方法: 从低位开始, 每四位为一组, 高位不足四位补0, 用分别用十六进制数替换每四位二进制数
    
    //0b 0011 1011 1101 0011 1101 0100 0001 1010 = 0x3bd3d41a
    
     
    
    //内存: 存储数据信息的地方
    
    //RAM + ROM
    
    //16G
    
    //00000000  ~ 11111111
    
     
    
     
    
    //bit(二进制位)
    
    //1Byte(字节)  = 8bits
    
    //1Kb  = 1024Bytes
    
    //1Mb  = 1024Kbs
    
    //1Gb  = 1024Mbs
    
    //1Tb  = 1024Gbs
    
    //1Pb  = 1024Tbs
    
     
    
    //16G = 16*1024*1024*1024*8
    //
    //  main.c
    //  数据编码
    //
    //  Created by zhangxueming on 15/5/26.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #include <stdio.h>
    
    //8bits = 1Byte
    //最高位作为符号位, 高位为1,表示负数, 高位为0表示正数
    
    //char类型 1字节
    //5+6
    //00000101
    //00000110
    //-6
    //10000110
    //原码:最高位为符号位, 其余位表示绝对值大小
    
    //5+6
    // 00000101
    //+00000110
    //-----------
    // 00001011(原码) == 11
    
    //-5-6 <==> -5 + (-6)
    // 10000101
    //+10000110
    //----------
    // 00001011 =  11
    
    //原码不能进行减法运算(可以进行加法运算), 符号位也参与了运算, 得到的值跟实际值不相等, 计算机不能以原码的方式存储数据
    
    
    //反码:对于正数来说,它的反码就是它的原码,对于负数,符号位不变, 其余位按位取反
    //6  原码: 00000110 反码: 00000110
    //-5 原码: 10000101 反码: 11111010
    
    //-8 -12 -20
    //-8 反码: 11110111
    //-12   : 11110011
    //-20   : 11101011
    
    //5-6
    //-6 原码: 10000110 反码: 11111001
    //   00000101
    //  +11111001
    //--------------
    //   11111110(反码)--> 10000001(原码)=-1
    //反码转原码: 对反码再求一次反码
    
    //-5 + (-6)
    //-5: 原码: 10000101 反码:11111010
    //-6  原码: 10000110 反码:11111001
    // 11111010
    //+11111001
    //----------
    // 11110011 (反码)-->10001100 =-12+1 = -11
    //可以把进位1加到低位上去, 反码就能得到正确运算结果
    
    //0的表示
    //+0 00000000
    //-0 10000000
    //反码不用来存储数据, 因为0的表示不唯一
    
    //补码
    //正数的补码就是它的原码,对于负数, 在反码的基础上加1
    
    //-5 补码:11111011
    //-6 补码:11111010
    //-9 -24 -7
    //-9 : 11110111
    //-24 : 11101000
    //-7 : 11111001
    
    //  11111011
    // +11111010
    //-----------
    //  11110101(补码)--> 10001011(原码)== -11
    //补码转原码: 对补码在一次补码
    
    //00000000
    
    //10000000  = -128
    //高位的1即表示符号又表示绝对值大小
    
    //计算机采用补码的方式存储数据
    
    //数据类型 + 变量名;
    
    //int main(int argc, const char * argv[]) {
    //    char ch = 100;
    //    printf("%d",0b11111111);
    //    return 0;
    //}
    
    //基本数据类型
    //数据类型决定了变量或者常量占用的内存空间大小
    
    //整型
    //char  short  int  long   long long
    
    //64位平台
    //char = 1
    //short = 2
    //int = 4
    //long = 8
    //long long =8
    //32位平台
    //char  = 1
    //short = 2
    //int  = 4
    //long = 4
    //long long = 8
    
    //int main(int argc,const char *argv[])
    //{
    //    char ch ;
    //    printf("char = %ld
    ", sizeof(ch));//sizeof 运算符求变量或者常量占用的内存空间大小
    //    printf("short = %ld
    ", sizeof(short));
    //    printf("int = %ld
    ", sizeof(int));
    //    printf("long = %ld
    ", sizeof(long));
    //    printf("long long =%ld
    ", sizeof(long long));
    //    return 0;
    //}
    
    //数据类型的取值范围
    //unsigned int  无符号整型数据
    
    //注释代码 #if 0 ... #endif
    #if 0
    int main(int argc,const char *argv[])
    {
        //char max = 127 min = -128
        char a=0b01111111, b=0b10000000;
        printf("char max = %d min = %d
    ", a, b);//%d可以打印char short int 类型数据
        
        //short max = 32767 min = -32768
        short c = 0x7fff, d = 0x8000;
        printf("short max = %d min = %d
    ", c, d);
        
        // 2147483647 min = -2147483648
        printf("int max = %d min = %d
    ", 0x7fffffff, 0x80000000);
        
        //long max = 9223372036854775807 min -9223372036854775808
        printf("long max = %ld min %ld
    ", 0x7fffffffffffffff,0x8000000000000000);//%ld 打印long类型数据
        
        long long l=132456;
        printf("long = %lld
    ", l);//%lld打印 long long 类型数据
        
        //无符号号取值范围 unsigned int
        
        printf("max = %u min = %u
    ", 0xffffffff,0x00);
        //%u  unsigned char unsigned short unsigned int
        //%lu unsigned long
        //%llu unsigned long long
        return 0;
    }
    #endif
    
    //浮点型(实型数据)
    //float  double   long double
    //float = 4
    //double = 8
    //long double = 16
    
    //int main(int argc,const char *argv[])
    //{
    //    printf("float = %ld
    ", sizeof(float));
    //    printf("double = %ld
    ", sizeof(double));
    //    printf("long double = %ld
    ", sizeof(long double));
    //    return 0;
    //}
    
    //浮点类型数据表示:
    //1.常用方法:3.14   23.456789
    //2.科学计数法: 234.5 == 2.345*10^2 (不适用计算机)
    //3.指数法: 2.345e2
    
    //int main(int argc,const char *argv[])
    //{
    //    printf("%f
    ", 2.345e2);//指数法
    //    printf("%f
    ", 3.14);
    //    return 0;
    //}
    
    //float 4字节
    //234.5     + 0.2345e3
    //符号位(1bit) + 小数位(23bits) + 指数位(8bits)
    //
    //float 精度 6~7
    //double 精度 15~16
    
    //int main(int argc, const char *argv[])
    //{
    //    float f1 = 3.23456789006545;
    //    printf("f1 = %.14f
    ", f1);
    //
    //    double f2 = 1.876543456789345678976543234567;
    //    
    //    printf("f2 = %.20f
    ",f2);
    //    return 0;
    //}
    
    int main(int argc,const char *argv[])
    {
        int num;
        scanf("%d",&num);//从标准输入文件中读取数据到内存中 stdin
        //fscanf(stdin, "%d", &num);
        
        printf("num = %d
    ",num);
        
        printf("hello world
    ");//把内容写入到标准输出文件中 stdout
        return 0;
    }
  • 相关阅读:
    vue-router2.0 组件之间传参及获取动态参数
    vuex
    移动端微信部分知识总结
    移动端js知识总结
    [luogu]P4365[九省联考]秘密袭击coat(非官方正解)
    [luogu]P4364 [九省联考2018]IIIDX
    [luogu]P4363 [九省联考2018]一双木棋chess
    后缀数组自用
    BZOJ5288 [Hnoi2018]游戏
    Bzoj5290: [Hnoi2018]道路
  • 原文地址:https://www.cnblogs.com/0515offer/p/4531270.html
Copyright © 2020-2023  润新知