20140427
1、字节序
0x1234
小尾:
内存地址 存放内容
0x4000 0x34
0x4001 0x12
大尾:
内存地址 存放内容
0x4001 0x12
0x4000 0x34
//结果是-59,-2 #include<stdio.h> #include <string.h> struct bitstruct { int b1:7; // int :2; int b2:2; }; void main() { bitstruct b; memcpy(&b,"EMC ",sizeof(b));//EM:(1010 0010 1011 0010) //计算时需要逆转: //b.b1:1000101(1010001逆序) //b.b2:10(01逆序) //分别求b.b1 和b.b2的补码(取反加1) printf("%d, %d",b.b1,b.b2); }
2、什么是编码?原码,反码,补码
将一个真值表示成二进制字串的机器数的过程就称为编码
无符号数没有原码、反码和补码一说。带符号整数有原码、反码、补码等几种编码方式。
原码即直接将真值转换为其相应的二进制形式,而反码和补码是对原码进行某种转换编码方式
正整数的原码、反码和补码都一样
负数的反码是对原码的除符号位外的其他位进行取反后的结果。
补码是先求原码的反码,然后在反码的末尾位加1 后得到的结果,即补码是反码+1
3、单链表的建立,测长,和打印
//尾插法:建立带头结点head的单链表
#include<stdio.h> #include<iostream> #include<malloc.h> typedef struct student { int data; struct student *next; }node; node *create( ) //尾插法:建立带头结点head的单链表 { node * head,*rear,*s; int x=0; head=(node *)malloc(sizeof(node *)); head->data=0; printf("please input data: "); scanf("%d",&x); rear=head; while(x!=0) { s=(node *)malloc(sizeof(node)); s->data=x; rear->next=s; rear=s; head->data++; printf("please input data: "); scanf("%d",&x); } rear->next=0; //这句话一定加上,不然后果很严重 return head; } int length(node *head) { int n=0; node *rear=head->next; while(rear!=NULL) {n++; rear=rear->next;} printf("the length is %d\n",n); return n; } void display(node *head) { node *rear=head->next; while(rear!=NULL) { printf("%d ",rear->data); rear=rear->next; } printf("\n"); } void main() { node *head=create(); length(head); display(head); }
Q: 为什么需要表头结点head
A: http://blog.csdn.net/leo115/article/details/8602621
1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.
2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了单链表操作的统一性!
3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug的机会。
4、对单链表的多数操作应明确对哪个结点以及该结点的前驱。不带头结点的链表对首元结点、中间结点分别处理等;而带头结点的链表因为有头结点,首元结点、中间结点的操作相同 ,从而减少分支,使算法变得简单 ,流程清晰。对单链表进行插入、删除操作时,如果在首元结点之前插入或删除的是首元结点,不带头结点的单链表需改变头指针的值,在C 算法的函数形参表中头指针一般使用指针的指针(在C+ +中使用引用 &);而带头结点的单链表不需改变头指针的值,函数参数表中头结点使用指针变量即可。
4、 TCP 三次握手建立连接/四次握手关闭连接 及 状态迁移图
http://blog.163.com/pandalove@126/blog/static/98003245201221441436687/