2.65

int even_ones(unsigned x)

要求:return 1 when x contains an even number of 1s; 0 otherwise. 假设int 有 w=32位。

分析:最应该使用的是循环,但是循环语句不能使用。如果一个一个的写成语句,需要32次;这里使用二分法,那么操作就变成了Log232 =5次。二分法蕴含了循环同时简化了循环遍历。如何使用二分法?

题目是判断x中1的奇偶数,可以将x一分为2,前16位x1与后16位x2,x3=x1^x2,则,如果x有偶数个1,x3必定有偶数个1;如果x有奇数个1,x3必定有奇数个。

int even_ones(unsigned x)
{
x ^= (x >> );
x ^= (x >> );
x ^= (x >> );
x ^= (x >> );
x ^= (x >> );
return !(x & );
}

2.66

int leftmost_one(unsigned x)

要求: generate mask indicating leftmost 1 in x. assume w=32; if x=0, then return 0;

提示:先将x转换成形如[0..011..1]的位向量

分析:这里就是寻找最高位的1在位向量x中是第几位,应该使用循环,然后循环不能用,这里使用二分法。首先,如【提示】中,先将x转换成形如[0..011..1]的位向量,即:最高位1之后的所有位都变为1。

int leftmost_one(unsigned x)
{
x |= x >> ;
x |= x >> ;
x |= x >> ;
x |= x >> ;
x |= x >> ;
x &= ~(x >> );
return x;
}

最新文章

  1. Webpack 入门指南 - 1.安装
  2. 修改dedecms默认文章来源 "未知"改为关键词
  3. 20151221jquery学习笔记--验证插件
  4. PHP 发邮件不换行
  5. Java中json工具对比分析
  6. 5.4.1 RegExp实例属性
  7. 京东口红top 30分析
  8. 美杂志初次取得答应走进google奥秘研讨所Google X
  9. 【Unity Shaders】《Unity Shaders and Effects Cookbook》总结篇
  10. [Leetcode]724. Find Pivot Index
  11. PHP 常用知识点
  12. 【转】Python之面向对象与类
  13. 盖得化工----requests/bs4---采集二级网址
  14. ChemDraw加键的两种方法
  15. windows 下运行 tomcat
  16. Hive(四)hive函数与hive shell
  17. Exception in thread "main" java.lang.UnsupportedClassVersionError: com/crack
  18. 做个简单的Redis监控(源码分享)[转载]
  19. [CODECHEF]LUCASTH
  20. django--博客--forms组件-用户注册

热门文章

  1. C内存分配函数
  2. ubuntu服务器/home/分区替换3T硬盘
  3. 转AOP 介绍
  4. VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld
  5. Android的NDK开发(4)————JNI数据结构之JNINativeMethod
  6. 抽象工厂在ADO.Net中的应用
  7. POJ 2828 Buy Tickets (线段树 单点更新 变形)
  8. 解析Android开发优化之:从代码角度进行优化的技巧
  9. 函数buf_page_hash_get_low
  10. UVA 11354 Bond(最小瓶颈路+倍增)