Fork me on GitHub

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\n", b1); // 65526

    printf("%x\n", b1);

    

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

    printf("%d\n", 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 \n", c1); //如果按%c的形式输出,就输出对应的字母

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

 

转义字符

\n 回车换行

\t tab键

\\ \

\”

\’

 

 

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

 

13.格式化输入与输出

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

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

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

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

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

    

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

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

    

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

    

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

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

    

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

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

    printf("%8.2f\n", 123.45678);

    

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

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

 

 

格式输入

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

//    int i ;

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

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

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

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

//    

//    //缓冲区 12回车

//    char xxx;

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

//    

//    char  c  ;

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

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

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

//    

//    

//    int  d ;

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

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

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

//    

 

posted @ 2016-03-16 10:08  极度恐慌_JG  阅读(288)  评论(0编辑  收藏  举报