20171104c语言第二节总结

来源:互联网 发布:1月8日制造业数据 编辑:程序博客网 时间:2024/05/22 02:48

1.浮点型的储存与大小端

  1. 符号位(Sign) : 0代表正,1代表为负
  2. 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储
  •        3.  尾数部分(Mantissa):尾数部分
  •                                                                 

    1符号位       

    8位指数位           

    23位的尾数位                      

  •    正为0           +127转二进制     表示浮点数的进度
  •    例如:12.5
  •         先将12.5转化为二进制为1100.1=1.1001*2^3。  即这个数的指数位为3,由于指数位是采用移位的存储方式,所以指数位的数值为移动的位数+127(其中左移为正,右移为负),    其二进制表示为10000010,  其位数部分为1001后面的零补齐。即12.5在内存中的表示为0 10000010 10010000000000000000000 。
  • 大小端问题:
  • 举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

    1)大端模式:

    低地址 -----------------> 高地址
    0x12  |  0x34  |  0x56  |  0x78

    2)小端模式:

    低地址 ------------------> 高地址
    0x78  |  0x56  |  0x34  |  0x12

    2.运算符

  • C++运算符优先级表优先级运算符说明结合性1::范围解析自左向右2++   --后缀自增/后缀自减()括号[]数组下标.成员选择(对象)−>成员选择(指针)3++   --前缀自增/前缀自减自右向左+   −加/减!   ~逻辑非/按位取反(type)强制类型转换*取指针指向的值&某某的地址sizeof某某的大小new, new[]动态内存分配/动态数组内存分配delete, delete[]动态内存释放/动态数组内存释放4.*   ->*成员对象选择/成员指针选择自左向右5*   /   %乘法/除法/取余6+   −加号/减号7<<   >>位左移/位右移8<   <=小于/小于等于>   >=大于/大于等于9==   !=等于/不等于10&按位与11^按位异或12|按位或13&&与运算14||或运算15?:三目运算符自右向左16=赋值+=   −=相加后赋值/相减后赋值*=   /=   %=相乘后赋值/相除后赋值/取余后赋值<<=   >>=位左移赋值/位右移赋值&=   ^=   |=位与运算后赋值/位异或运算后赋值/位或运算后赋值17throw抛出异常18,逗号

    自左向



  • 位运算符:

  • c语言中的位运算符主要有以下几种:

       

        使用的时候主要有以下几个注意点:

        1.左移运算符将<<将运算数的二进位左移,高位丢弃,低位补零。

  •     2.右移运算符将>>将运算数的二进位右移,低位丢弃,高位补零。

        3.避免位运算符,逻辑运算符和数学运算符出现在同一个表达式中,如果要在同一个表达式中出现,那么需要用括号来表达运算次序。

       4.左移n位相当于乘以2的n次方,右移n位相当于除以2的n次方,但是他们的运算效率要比数学运算符高。

  •    二进制与运算规则:1&1=1 1&0=0 0&0=0
       二进制或运算规则:1|1=1 1|0=1 0|0=0

  •     比如:11:0000 1011

  •                13:0000 1101

  •                ~11:1111 0100

  •                 11&13:0000 1001

  •                 11|13:0000 1111

  •                 11^13:0000 0110

  •                   11>>1:0000 0101

  •                   11<<1:0001 0110

  • 3.强制类型转换

  • sizeof有三种语法形式,如下:
    1) sizeof( object ); // sizeof( 对象 );
    2) sizeof( type_name ); // sizeof( 类型 );
    3) sizeof object; // sizeof 对象;
    所以,
    int i;
    sizeof( i ); // ok
    sizeof i; // ok
    sizeof( int ); // ok
    sizeof int; // error

  • 例如:sizeof( 2 );// 2的类型为int,所以等价于 sizeof( int );
    sizeof( 2 + 3.14 ); // 3.14的类型为double,2也会被提升成double类型,所以等价于 sizeof( double );











  • 
    
    
    
  • 原创粉丝点击