原码 补码 反码
原码: 用一个数的最高位存放符号(0为正,1为负)。
反码: 对原码“负数”除符号位外的其余各位逐位取反就产生了反码。
补码: 对原码“负数”取反加一。
1 - 2= 1 +(-2) = -1
(00000001) 补+ (11111110) 补= (11111111)补 = ( -1 ) 正确
⑴使符号位能与有效值部分一起参加运算,从而简化运算规则.
⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计
http://blog.csdn.net/monnand/archive/2006/12/06/1432606.aspx (转)
Coolstream & Gossip
Coolstream/Donet 一种用于流媒体的数据驱动网络. 每一个结点与一组伙伴周期性地交换数据可用性信息
成员关系和伙伴关系的管理算法和一个智能调度算法
Gossip协议
典型的闲谈算法中, 一个结点将新信息发给一组随机选择的结点; 这些结点会在下一轮中作相似的事情, 直到所有结点都收到信息.
闲谈对象的随机选择, 能使系统加强对随机发生的意外退出的弹性, 并且能够进行非中心式的操作.
DONet 的成员管理中使用了闲谈协议. 有力伙伴的选择算法, 和一个低开销的调度算法, 以便于在大量减少冗余的情况下, 智能地从众多伙伴中接收数据.
(1) 成员管理模块 ( Membership Manager ).
(2) 伙伴管理模块 ( Partnership Manager ).
(3) 调度器 ( Scheduler ).
DONet 结点 维护着一个缓存(mCache), 用来存储 DONet 网络中一部分活跃成员的标识符
新加结点首先和源结点联系,源结点随机从mCache中选取一个作为代理结点,将新加结点重定向到代理结点,新加结点从代理结点处获得成员列表,建立伙伴关系
建立并更新 mCache
缓存映像的表示和交换
一个视频流被分解为多个定长的分段. 结点缓存中各个分段的可用性信息被表示为一个缓存映像 ( Buffer Map, BM ). 每个结点会和它的伙伴不断地交换各自的BM. 之后, 通过调度算法, 确定从哪个伙伴处接收哪个分段.
C. 调度算法
如果一个分组对应着多个潜在提供者, 那么具有最高带宽并且具有更长可用时间的提供者会被选中.
把需要从同一个伙伴处获得哪些分段的信息存储在一个类似 BM 的位序列中.
为了防止源结点过载, 这里给出了一个适应度较高的调度算法. 如果需要, 它还可以通过对外公布保留的缓存映射来控制负载. 例如, 一个源结点拥有 M 个伙伴, 那么它可以把传递给第 k 个伙伴的 BM 设置为:
这就是说, 只有第 ( i mod M ) 个伙伴才会从源结点处获得第 i 个分段. 其他的分段则来自别的伙伴.
D.错误恢复
声明后退出: 即将退出的结点会提交一个退出消息. 这个信息的格式与成员信息一样, 只是num_partner这一项被设为-1.
意外退出: 一个结点的意外退出会被它的伙伴检测到. 这个伙伴会代替退出的结点来发布退出消息.
每个结点会定期地从它的 mCache 中随机选择出结点并与之建立伙伴关系. 这一操作的目的有两个: 第一, 它使得每个结点可以在一些伙伴退出的情况下, 维护一定数量的伙伴; 第二, 它使得结点可以寻找到更高质量的伙伴.