码迷,mamicode.com
首页 > 其他好文 > 详细

[skill] 异或

时间:2017-04-28 20:35:47      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:不能   ash   server   生成   也有   lis   存储   port   异或   

 

都怪学习不好,或者老师教的不好。虽然知道异或的算法,但是始终不明白,到底有什么意义。。。直到今天,终于明白了。

还是应该怪我学的不好,不能怪老师。

 

今天有一个应用场景,写一个函数。这是一个hash表的插入函数,实现的是tcp/ip的流存储。输入是一个以太包,为了在这个表的存下双向包。

需要定义一个hashkey的生成规则。这个规则是,ip+port小的放在前面,大的放在后面,共同组成一个key。所以我需要一个外部的变量来标识

一个以太包在生成key的时候,是否做了源目的信息的对掉。用0/1表示。然后通过这个值来确定将以太包保存在server list里还是client list里。

 

如: 0表示server list;  1 表示 client list

但是实际上,在这个函数的外部,又有一个大逻辑。这个外部逻辑可以提供一个输入代表此包属于server list 还是 client list。此逻辑也有 0/1 表示。

于是,当这个值为1的时候,函数里的0便代表client list, 而1便代表server list了。

 

这个逻辑的实现,便可以用 两个变量异或。V

 

PS:事实上,以上逻辑并不严谨。而我的代码最终实现的时候,也不是这样的。详细的最终逻辑可以参考代码。

但是,思路已经说明了异或是什么!。

 

[skill] 异或

标签:不能   ash   server   生成   也有   lis   存储   port   异或   

原文地址:http://www.cnblogs.com/hugetong/p/6782756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!