EE_DSnP 板


LINE

※ 引述《samuelduan ()》之铭言: : 不好意思 我也想问一些很基本的问题...>"< 没问题!! : ※ 引述《ric2k1 (Ric)》之铭言: : : 9. All the operations on BddNodeInt* need to go through BddNode --- : : * In the BddNode constructor, we increase the reference count of the : : BddNode::_node. So if a BddNode variable is declared, the reference : : count of its associated BddNodeInt* will be incremented by 1. : : * In the BddNode descructor, we decrease the reference count of the : : BddNode::_node. So if the program goes out of the scope of a certain : : BddNode variable, the reference count of its BddNodeInt* will be : : decremented by 1. : : * In the BddNode assignment '=' operator, for example, f = g, we first : : decrease the reference count of "f._node", and then increase the : : reference count of "g._node". Of course, we will asssign : : "f._node = g._node" : Q1: 我对 f = g 的领会是 f node 指向(还是应该说是连到?) g node : 可以了解 g 的ref count要加1 : 但是为何 f 的ref count也要减1呢 : f 本来的架构应该不会改变不是吗? f, g are BddNodes. 把他们想成是 BddNodeInt* 的壳子... f = g 的意思是将 g 的内容 copy 到 f 去, 所以原来 g 所包的 BddNodeInt* 就会有多一个 "人" (i.e. 'f') 包着他, 所以他的 reference count 要加一, 但是原来 f 所包的 BddNodeInt* 呢? 他被新的 BddNodeInt* 所取代, 所以他就少了一个 "人" 包着他, 所以他的 reference count 要减一. : : 13. So we will take the advanatage of the fact that the pointer addresses are : : multiplier of 4, and we can use the lowest two bits to record the edge : : information. We use the lowest 1 bit to record the INVERSION. : : 14. To use the lower bits of a pointer variable, we need to conver it to a : : size_t variable, such as: : : v = size_t(n); : : and then the edge information can be added to it by v = v + 1. : : 15. Combining the above, we redefine the classes BddNode and BddNodeInt as... : : class BddNode { : : size_t _nodeV; // to hold BddNodeInt* and 1-bit edge info : : }; : : class BddNodeInt { : : BddNode _left; : : BddNode _right; : : unsigned _level : 16; : : unsigned _refCount : 15; : : unsigned _visited : 1; : : }; : Q2: 所以我可以把 size_t _nodeV 看成BddNodeInt* _node 有一样功能的data member : 然後 BddNode::getBddNodeInt() 就是一个converter 可以这麽说 : 只是有点看不懂 BDD_NODE_PTR_MASK的定义 : ((UNIT_MAX >> BDD_EDGE_BITS) << BDD_EDGE_BITS 是让这个 _nodeV 变成一个合理的 : pointer address? UINT_MAX = max unsigned integer = 32 bits of 1's UINT_MAX >> BDD_EDGE_BITS = UINT_MAX >> 2 // right-shift 2 bits (UINT_MAX >> BDD_EDGE_BITS) << BDD_EDGE_BITS // then left-shift 2 bits overall, these two shifts produce "111....11100" (30 1's, 2 0's) and when it "&" with _nodeV, it makes the least two significant bits of _nodeV 0's. ==> the pointer address : Q3: 在前面几篇有同学问到 BddNode::_one 和 BddNode::_zero : 我比较疑问的是在 BddManager::init()中 : BddNode::_one = BddNode(BddNodeInt::_terminal, BDD_POS_EDGE); : 如果这里 _terminal = 0 : 那当呼叫到 BddNode::BddNode(BddNodeInt* n, BDD_EDGE_FLAG f) 时 : 其中的 assert(n!=0) 不是会有问题吗? _terminal 不是 0 !!!!! _terminal has ---- _level = 0; _left = 0; _right = 0; It itself is a valid BddNodeInt* !!! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.121.129.139







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP