我是靠谱客的博主 唠叨白开水,最近开发中收集的这篇文章主要介绍20140427 字节序 小尾 大尾; 编码:原码,反码,补码;单链表头结点的作用1、字节序2、什么是编码?原码,反码,补码3、单链表的建立,测长,和打印4、 TCP 三次握手建立连接/四次握手关闭连接 及 状态迁移图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、字节序

0x1234

小尾:

内存地址         存放内容

0x4000            0x34

0x4001            0x12

大尾:

内存地址         存放内容

0x4000            0x12

0x4001            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 %dn",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/

转载于:https://www.cnblogs.com/yexuannan/p/3695153.html

最后

以上就是唠叨白开水为你收集整理的20140427 字节序 小尾 大尾; 编码:原码,反码,补码;单链表头结点的作用1、字节序2、什么是编码?原码,反码,补码3、单链表的建立,测长,和打印4、 TCP 三次握手建立连接/四次握手关闭连接 及 状态迁移图的全部内容,希望文章能够帮你解决20140427 字节序 小尾 大尾; 编码:原码,反码,补码;单链表头结点的作用1、字节序2、什么是编码?原码,反码,补码3、单链表的建立,测长,和打印4、 TCP 三次握手建立连接/四次握手关闭连接 及 状态迁移图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部