按照上一篇中提到的思路,最后问题的焦点在于:怎样快速找到tmp中的为1的bit位在x中的实际位置。这样在计算N值的同时将每一位的权值与索引位置的关系用数组对照起来,最后只需要在遍历tmp的值为1的bit位时作相应的加权累加即可。
也综合评论中提到的递归方案,重新补充了各个方案的代码和性能测试代码。
见“方案1”的代码处:
按照上一篇中提到的思路,最后问题的焦点在于:怎样快速找到tmp中的为1的bit位在x中的实际位置。这样在计算N值的同时将每一位的权值与索引位置的关系用数组对照起来,最后只需要在遍历tmp的值为1的bit位时作相应的加权累加即可。
也综合评论中提到的递归方案,重新补充了各个方案的代码和性能测试代码。
见“方案1”的代码处:
给定一个long型常量,其值为x,给定long型变量a,要求a & x 的取值集合,结果放入ArrayList中。
思路,x先转换为bit数组,得出其中元素值为1的总数为n,则所有取值的总数为2的n次方,记为N。
在0~N的闭区间中,依次取出各个数值,记为tmp,将tmp也转换为bit数组,依次遍历x的每一个bit位,当x的bit位为1时,到tmp中去取出相应的bit位,如果也为1,则将该位为1时,其他所有位为0时所代表的数值累加到结果中。
遍历完所有的bit位后,得到的结果即为所需要的数值。
整个思路有点复杂,性能也不高,从数值本身的与或运算上面着手,肯定还有更简单的方法。
代码:
80后,半路出生,还奋战在IT一线的老码农一枚。做过电信级服务端软件,也写过Java应用,精通各大语言的HelloWord :) 。略懂存储,喜欢折腾WEB,喜欢DIY硬件。向往无拘无束,自由自在的生活方式,闲暇时看看电影,读读历史、文学,写写技术文章,勤于总结。这里更多关注IT领域的基础知识,看到好的文章也会忍不住转来这里。注重实践,总希望能够深挖知识点和问题,但是表达能力欠缺,明于心却不明于口,看文章时如有疑惑,欢迎不吝指正。 努力做好博客,希望借助于这个平台认识更多有着共同志趣的同学。
木兰词
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
骊山语罢清宵半,泪雨零铃终不怨。
何如薄幸锦衣郎,比翼连枝当日愿。
浣溪纱
谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳。
被酒莫惊春睡重,赌书消得泼茶香,当时只道是寻常。
长相思
山一程,水一程,身向榆关那畔行,夜深千帐灯。
风一更,雪一更,聒碎乡心梦不成,故园无此声。
忙碌而快乐的三月份,三月份的事情非常多。
本来过年过来不怎么想打游戏了,但是工作越是忙就越是想找点有成就感的事情做,打游戏还可以跟在盟友后面逞威风,对一场游戏的输赢看的太重了,以至于心跳的速度都快跟上160APM的手速了,这也挺郁闷的,本来就是想轻松点。
互联网成了我现在了解社会的唯一途径了,在公司的时候安心工作,放假的时候也就都呆在电脑旁,每周有7天的时间都在电脑旁边,刚才看到一个什么“地球一小时”的新闻,要是真熄灯一小时,还真不知道该做点什么去,呵呵。
上上上周跟着祁老师喜哥出去逛了一下,难得居然是来深圳后第一次出去,看到了只在Google Earth上看到过的地王大厦,第一次乘坐了传说中的地铁,去了荔枝公园。
用了6个月的时间完成从没做过编码工作也完全不了解通信知识的学生到通信领域程序员的转变,不管技能方面还有多大的差距,起码这6个月的工作态度和努力程度得到大家的认可,给大家的第一印象还不错。
回想一下,多少个周六、周日和节假日,极不情愿地去公司加班;多少个晚上争分夺秒地解决问题,一直忙到晚上9点多,还要保证第二天早8点前到岗。说不累,工作的挺开心,那肯定是假的。在如此付出的情况下,还要担心是不是给别人留下不好的印象:用频繁的加班来弥补工作效率的低下。担心自己是不是不符合岗位的要求,总有一种战战兢兢、如履薄冰的感觉,也许正是这种危机感,不断告诉自己要小心谨慎地解决每一个问题。由于完全没有做过软件工作,也没有系统学习过计算机课程,有时还要被别人误解,在学校里读了那么多年书,怎么连这么简单的知识都不知道,的确6年里学到的可以用到工作上的知识还不如这6个月的多。记得刚进来的时候,连编辑、调试代码的工具都不会,频频弄出笑话来。不管这段时间付出了多少,得到了怎样的进步,都只是代表过去,现在要借助这样一个良好的开端和公司提供的平台全面发展自己。
本来初六的晚上到深圳,初七就开始上班,连续工作了13天,今天想好好休息一下,却怎么也睡不着,早早就起床,打开了电脑,也许是为自己这段时间的努力没有白费高兴不已,呵呵。
今天突然打开卫星地图,鼠标不由自主地就点到武汉去了,然后就到了武汉大学,遥相呼应的行政楼和理学院楼,整齐的文科区新建筑群,曾经无数次穿梭其间的珞珈广场,还有物理学院,沿着物理学院门前的小路到了图书馆,再到通往梅园的小路上,邮局,小卖部,梅园生活的点点滴滴又浮现在眼前了。如果不是迫于生活的压力,我想我会努力呆在学校里面,做点轻松的事情,过着并不富足但是很惬意的生活。可能是工作很郁闷吧,突然怀念起学生时代的生活了,有一点伤感。呵呵,再也回不去了,努力工作,努力生活!
毕业了,要去一个新的地方开始新的生活了,每到这样的时候总是很激动,很期待,甚至都盘算好以后要做些什么。很留恋在这里两年的生活,感谢导师,遇到好的导师是读研中最幸运的事情,呵呵。
就像很多人说的那样,第一年的时候的确是很茫然,选课,上课,考试,很没意思的生活,找工作也是很遥远的事情,还不知道自己想要做什么,就在这种空虚的环境中学会了玩电脑游戏,虽然玩的很差,但是没有比这个更能打发时间的事情了。第一年,实验没做,课程学的稀烂,自己的兴趣更谈不上,没有任何准备。
从找工作开始,真的感到了压力,就业的压力,生活的压力,也就是在这种压力下生活开始变得有些积极了。找完工作,做实验,所有的事情都开始走上正轨。这最后一个学期很轻松,花了两天的时间重新找到了现在的工作,继续做了一个月的实验,接着边学习编程的知识边做论文,时间过的很快。
如果让我从头再读一回,一定只用2个月的时间把毕业需要的所有东西都准备好,然后其他的所有时间都用来学习。当然那时不可能的,经历了一些事情后,才真的领会了某位同学的签名档里的一句话,“人生没有草稿,需要一气呵成”。
也迷信一回吧,希望这么吉利的报道时间能给我的职业生涯开个好头。
深圳,华为,软件,这些都是自己想象中的就业关键词,现在好像所有的事情都理顺了,就等毕业?
最近去天涯上的华为板块非常勤,想多了解一些这个公司。总是希望能看到正面的消息多过反面的,但是它们好像是旗鼓相当的,看到一个正面的,马上就有反面的。也许这就是这个极具争议的公司的真实写照,不管怎么样,希望到了那里后能找到我想要的东西。
走完了多灾多难的2007年,一直都想好好总结反思一下,但是总有点不敢回头看的感觉。其实07年都已经过去很久了,那些不好的记忆应该早点随风飘散的好。新的开始,08年,加油!