zoukankan      html  css  js  c++  java
  • C- 进制转换

    1. 计算机需要处理数据

    2.数据需要保存在存储器上

    3. 计算机只能识别0或者1的二进制数据

    4.我们看到的,用到的所有数据在计算机中都是以二进制存储的

    5.内存中的相同的01二进制数据,以不同的编码,可以有不同的展现形式

    6. 十进制整数与二进制、八进制、十六进制相互转换

    十进制转其他进制,取余法

    二进制转八进制,每三位二进制转换为一位八进制

    二进制转十六进制,每四位二进制转为一位十六进制

    7. 原码、反码和补码的表示形式

    在计算机中,数值以补码的形式存储的

    正数的原码、反码、补码都一样,

    负数的原码,最高位是符号位,其他位是数据位

    负数的反码,符号位不变,其他位依次取反

    负数的补码,是反码加1

    8. 变量的定义

    定义一个变量,需要告诉计算机,该变量的类型、变量名,可以同时告诉计算机该变量的初始值是多少。

    变量的类型,决定了变量的存储方式,变量的长度(变量的取值范围),变量所能进行的操作

    无符号整数,最高位就是数值位,

    有符号整数,最高位就是符号位,

    变量名来标识这块存储空间,用户通过变量名来访问这个变量

    给变量赋值,实际上就是把这个值放到变量名所标识的存储空间中

    int  a = 5;

    9.整型变量

    short / int / long / long long这几种类型,这是有符号的类型

    可以用unsigned来修饰这几种类型,变成无符号的数据类型,即第一位是数值位,而不是符号位

    short  -32768~32767     

    unsigned short     0~65535

    需要特别注意的是,在计算机中,不看你怎么存,只看你怎么读,如:

    unsigned short  b1 ; //系统会在内存中给b1变量开辟两个字节的存储空间

        b1 = -10;  //把-10存储到b1 这块存储空间中

     // -10补码 , 原码:1000 0000 0000 1010

                            //  反码:1111 1111 1111 0101

                            //  补码:1111 1111 1111 0110

    所以,在b1变量中存储的 内容 就是 1111 1111 1111 0110

                            

        //在计算机中,不看你怎么存,只看你怎么读

    因为,b1的数据类型是unsigned short, 如果把b1中的内容按%d的形式输出的话,原来最高位1就不再是符号位,而是数值位了,所以把1111 1111 1111 0110转换为十进制数就是 65526

        printf("%d ", b1); // 65526

        printf("%x ", b1);

        

        short b2 = b1; //如果定义一个有符号的变量b2,把b1变量中的值,即 1111 1111 1111 0110赋值给b2后, 这一串二进制的最高位1,又变成符号位了,表示负数, 1111 1111 1111 0110的补码转换为十进制就是-10

        printf("%d ", b2); //-10

    10. 小数

    在C语言中,小数分为float 和 double两种类型,区别在于所占字节数不同,表示的数据范围和精度也不同。

    float 占4字节, 有7位有效数字

    double 占8字节,有15位有效数字

    11. 字符型数据

    用单引号引起来的单个字符

    char c1 = ‘a’;

    //定义一个字符型变量,变量名是c1, 存储的值是该字符对应的ASCII码值

     //在ASCII这种编码格式下, 小写字母a对应的编码是 数字97,其二进制形式为 0110 0001

     // 大写字母A,对应的ASCII编码是 65,二进制形式为:0100 0001

    printf("%c ", c1); //如果按%c的形式输出,就输出对应的字母

        printf("%d ", c1); //如果按%d的形式输出,就输出对应的十进制数

    转义字符

    回车换行

    tab键

    \

    12. 一个长整型数据可以赋值给短整形数据,但是,高位会被扔掉,只保留相应的低位数据,

    13.格式化输入与输出

      //printf()函数可以按指定的格式输出内容

        // 是一个转义字符,表示回车换行

        printf("%D ", 123);      //%d就是格式符,表示以十进制整数输出

        printf("%O ", 123);      //%o就是格式符,表示以八进制整数输出

        printf("%x ", 123);      //%x就是格式符,表示以十六进制整数输出

        

        printf("%f ", 12345.67898765);     //按%f输出小数,默认有6位小数

        printf("%lf ", 12345.67898765);    //%lf输出是double类型数据

        

        printf("我有%d个苹果 ", 200);   //格式串中除了格式符用后面的数据来代替外,其他的字符按原样输出

        

        printf("abc%8dgh ", 123);      //指定输出的宽度,默认右对齐

        printf("abc%-8dgh ", 123);     //在宽度前加一个负号,表示左对齐

        

        printf("%.2f ", 123.45678);    //.2表示有两位小数

        printf("%4.2f ", 123.45678);   //如果指定的宽度小于数值长度,按实际长度输出

        printf("%8.2f ", 123.45678);

        

        printf("%c ", 'A');        //字符型数据按%c输出一个字符

        printf("%d ", 'A');         //字符型数据按%d输出对应的ASCII值

    格式输入

    //    //scanf()函数可以从键盘上接收输入

    //    int i ;

    //    printf("请输入一个整数:");

    //    scanf("%d", &i);        //从键盘上接收数据保存到变量i中, &这个符号叫取地址符, &i表示变量i的地址

    //        //在键盘上输入数据后,按回车键表示输入完成

    //    printf("你输入的数为%d ", i);

    //    

    //    //缓冲区 12回车

    //    char xxx;

    //    scanf("%c", &xxx);

    //    

    //    char  c  ;

    //    printf("请输入一个字符:");

    //    scanf("%c", &c);

    //    printf("你输入的字符为%c ", c );

    //    

    //    

    //    int  d ;

    //    printf("请输入一个小数:");

    //    scanf("%d", &d);

    //    printf("你输入的数为%d ", d );

    //    

  • 相关阅读:
    java算法:树遍历
    java算法:图遍历(深度优先和广度优先)
    Google禁止继续研发开源的"盖亚计划"
    Vc编程调试入门
    访著名Linux内核程序员大鹰
    访著名Linux内核程序员大鹰
    百度玩"精准搜索" 个人隐私保护问题值得商榷
    Google禁止继续研发开源的"盖亚计划"
    加密CMD使电脑溢出也拿不到CMD权限
    百度玩"精准搜索" 个人隐私保护问题值得商榷
  • 原文地址:https://www.cnblogs.com/GJ-ios/p/5282325.html
Copyright © 2011-2022 走看看