20150526数据编码

来源:互联网 发布:datagridview绑定数据 编辑:程序博客网 时间:2024/05/22 03:21

//

//  main.c

//  iOS150526

//  数据编码

//  Created bypengjunlong on 15/5/26.

//  Copyright (c) 2015 pengjunlong. All rights reserved.

//

//注释代码的方式:#if 判断条件 ... #endif

#include <stdio.h>


// *****************

// *               *

// *   数据编码     *

// *               *

// *****************

/*

 8bits = 1Byte

 char类型:1字节

 有符号数据类型:最高位作为符号位,高位为1表示负数,最高位为0表示正数

 char表示的数据范围:-128127

 6   0b00000110

 -6 = 0b10000110

 原码:最高位为符号位,其余位表示绝对值大小

 

 5+6            11

    00000101

  00000110

--------

    00001011      11

 

 5-6         11

   10000101

 10000110

 -------

 1 00001011     11

 原码不能进行减法运算(可以进行加法运算),符号位也参与运算,得到的值和实际的值不相等,计算机不能以原码的方式存储数据,高位符号位溢出。

 

 反码:

 反码:对于正数来说它的反码就是原码,对于负数,符号不变,其余位逐位取反。

  10001000(原码)->11110111(反码)+1->11111000(补码)

 -12 = 10001100->11110011+1->11110100

 -20 = 10010100->11101011+1->11101100

 

 5-6  11

 5:原码:10000101 反码:11111010

 6:原码:10000110 反码:11111001

    11111010

  11111001

 -------

  1 11110011 >0b10001100 = -12 11

 反码转原码:对反码再进行一次取反;可以将进位1加到低位上去,反码就能得到正确运算结果。

 

 反码进行运算的时候,一个正数和一个负数进行运算时结果可能正确,但两个负数进行运算时不正确。

 0的表示不唯一:

 0:00000000

 0:10000000

 故反码不能用来存储数据。

 

 补码:

 正数的补码就是它的原码,负数的补码是在反码的基础上加1

        原码      反码         补码

 9  10001001  11110110   11110111

 24 10011000  11100111   11101000

 7  10000111  11111000   11111001

 

 5-6  11

 5:原码:10000101 反码:11111010 补码:11111011

 6:原码:10000110 反码:11111001 补码:11111010

 

   11111011

 11111010

 ------

 1 11110101  >10001010+1->10001011=-11

 

 补码转原码:对补码再求一次补码

 

 00000000

 10000000=128

 高位的1既表示符号又表示绝对值大小

 计算机采用补码的方式存储数据。

 */


// *****************

// *               *

// *   基本数据类型  *

// *               *

// *****************


/*

 数据类型决定了变量或则常量占用的内存空间大小

整型:char  short  int  long  long long

浮点型:float  double   long double

 

 64位平台数据类型长度:

 char = 1

 int = 4

 short = 2

 long = 8

 long long = 8

 float = 4

 double = 8

 long double = 16

 32位平台数据类型长度:

 char = 1

 int = 4

 short = 2

 long = 4

 long long = 8

 */


void lengthOfDataType();

void lengthOfFloatDataType();


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

    // insert code here...

    printf("char = %ld\n",sizeof(char));                                        //sizeof运算符求变量或者常量占用的内存空间大小

    printf("int = %ld\n",sizeof(int));

    printf("short = %ld\n",sizeof(short));

    printf("long = %ld\n",sizeof(long));

    printf("long long = %ld\n",sizeof(long long));

    

    lengthOfDataType();

    lengthOfFloatDataType();

    return 0;

}


//整型数据类型的取值范围

void lengthOfDataType()

{

    char a = 0x7f;

    char b = 0x80;

    printf("char: max = %d,min = %d\n",a,b);                                    //%d可以打印char,short,int类型数据。(比int类型范围小的)

    

    short c = 0x7fff;

    short d = 0x8000;

    printf("short: max = %d,min = %d\n",c,d);

    printf("int: max = %d,min = %d\n",0x7fffffff,0x80000000);

    printf("long: max = %ld,min = %ld\n",0x7fffffffffffffff,0x8000000000000000);//%ld打印long类型数据

    

    long long l = 123456;

    printf("long long:%lld\n",l);                                               //lld打印long long类型数据

    //无符号取值范围 unsigned int

    printf("%u\n",0xffffffff);


}


//浮点型数据类型的取值范围

void lengthOfFloatDataType()

{

    printf("float = %ld\n",sizeof(float));

    printf("double = %ld\n",sizeof(double));

    printf("long double = %ld\n",sizeof(long double));

    /*

     1.常用方法:2.33  1232.342

     2.指数法:2.345e2 = 234.5

     */

    printf("%f\n",2.345e2);// 指数法

    printf("%f\n",2.33);

    /*

     float 4字节

     234.5   0.2345e3

     存储模型:符号位(1bit) | 小数位(23bit指数位(8bit

     float 精度67

     double 精度1516

    */

    float f1 = 3.23456789006545;

    printf("f = %f\n",f1);

    printf("f = %.14f\n",f1);

    double f2 = 3.23456789006545234524463;

    printf("f = %f\n",f2);

    printf("f = %.20f\n",f2);

}


// *****************

// *               *

// *   标准输入输出  *

// *               *

// *****************


void stdInputOut()

{

    int num;

    scanf("%d",&num);           //从标准输入文件中读取数据到内存中 stdin

    printf("num = %d",num);     //把内容写入到标准输出文件中 stdout       stderror

}


0 0
原创粉丝点击