图论一课(2)

来源:互联网 发布:excel怎么复制所有数据 编辑:程序博客网 时间:2024/06/16 20:03

课堂


1.浮点数
浮点类型分为float(单精度),double(双精度),如果定义一个变量float a = 12.5f;内存会分配四个字节给变量a,在内存中的表示形式为:1位符号位,8位阶码(指数),23位尾数。
float
- 将12.5转化为二进制为1100.1,科学指数法为1.1001*2^3,其中1001是尾数,3为指数。
- 首先,符号位肯定为0;
- 其次来看指数部分,由于指数部分可能为负数,在这里需要让指数3加上127存放到阶码的8位里。
- 对于尾数,就把1001放在小数点后,然后后面补0,因为尾数加0不改变尾数的值。
注:
- 指数的取值范围为:-127 -> 128,如果除去指数为0和1时,则是-126 ->127;
- 尾数的精度:6位,根据尾数的位数得2^23 = 8388608,则最多可表示6为有效数字。

2.内存存储方式
- 小端存储——低地址存入低数据(PC,inter)
- 大端存储——低地址存入高数据(网络,手机)
例:小端存储——

     int a = 10;     printf("%d\n",a);

小端存储

3.运算符
(1)++i / i++
j = i++;会生成辅助内存空间,操作步骤为:(tmp) = i; j = (tmp); i = i+1;
j = ++i;则不会浪费空间,其操作步骤为:i = i+1; j = i;

(2)&& / || / !
1)逻辑与(&&):必须表达式全为真
注:if (表1 && 表2 && 表3) 时,若表1为假则只执行表1,否则继续表2,若表2也为假则执行表1和表2,否则继续表3……

     int a = 0,b = 1,c = 2;     if (a++ && b++ && c++)     {          printf("ture:%d %d %d\n",a,b,c);     }     else     {          printf("false:%d %d %d\n,a,b,c");     }

&&

2)逻辑或(||):只要一个表达式为真
注:if (表1 || 表2 || 表3) 时,若表1为真则只执行表1,否则继续表2,若表2也为真则执行表1和表2,否则继续表3……

     int a = 0,b = 1,c = 2;     if (a++ || b++ || c++)     {          printf("ture:%d %d %d\n",a,b,c);     }     else     {          printf("false:%d %d %d\n,a,b,c");     }

||

3)逻辑非(!):非真为假,非假为真

int a = 10;a = !!a;printf(" %d\n",a);if (a == 1)printf("turn\n");else printf("false\n");if (a != 1)printf("turn\n");else printf("false\n");if (a == 0)printf("false\n");else printf("true\n");if (a != 0)printf("turn\n");else printf("false\n");

!

(3)~ / | / & / ^ / >> / <<

10:0000 1010
11:0000 1011

1)按位取反~:~10: 1111 0101
2)按位取或 |:10 | 11:0000 1011
3)按位取与 &:10 & 11:0000 1010
4)按位异或 ^:10 ^ 11:0000 0001
5)右移>>:10 >> 1:0000 0101 -> 5
6)左移<<:10 << 1:0001 0100 -> 20

(4)* / &
int a = 10;
int *p = &a ;
*p = 20;//解引用,跳入内存

原创粉丝点击