C++奇技淫巧(一):取位数,交换,比较,求均值
来源:互联网 发布:行知基地实践活动作文 编辑:程序博客网 时间:2024/06/03 15:56
一、计算一个数转化成二进制后包含1的位数
写法:判断x&(x-1)计算了几次
程序:
int func(int x){ int count = 0; while(x){ count++; x = x&(x - 1); } return count;}
牛逼!!!
————————————————二、编程风格
写法1:
if (a == 'A')
写法2:
if ('A' == a)第二种写法好一些,这时如果少写一个等号就可以检查到错误
————————————————
三、取两个数的平均值
写法:取相同的位与,相当于相同位的和除以2,取不同的位右移,相当于不同位的和除以2
程序:
int f(int x, int y){ return (x&y) + ((x^y)>>1);}牛逼!!!
————————————————
四、不用判断语句,找到两个数中比较大的
程序:
int f(int x, int y){ return ((x + y) + abs(x - y))/2;}
————————————————
五、找到三个整数的中间数
思路:两两取最大,然后取最小,反之亦可
程序:
int medium(int a, int b, int c){ int t1 = max(a, b); int t2 = max(b, c); int t3 = max(a, c); return min(t1, min(t2, t3));}————————————————
六、不使用中间变量交换两数的值
思路:加减法容易溢出,异或就不必担心
注意交换函数如何通过形参改变实参!
两种方式:指针,引用
程序1:
void swap1(int *a, int *b){ *a = *a + *b; *b = *a - *b; *a = *a - *b;}
程序2(标准写法):
void swap2(int &a, int &b){ a = a^b; b = a^b; a = a^b;}
牛逼!!!
————————————————
阅读全文
0 0
- C++奇技淫巧(一):取位数,交换,比较,求均值
- vim奇技淫巧(一)(转)
- NDK开发的奇技淫巧(一)
- Delphi奇技淫巧(一)string系列
- 求均值
- C语言fmod()函数:对浮点数取模(求余)和%取余运算符的比较
- 求n!的位数以及求n!具体的值(C or C++)
- 数字位数的交换(不能任任意位数)
- HDU1018求大数N!的位数【取对数】
- c/c++奇技淫巧
- C/C++的奇技淫巧
- C语言的奇技淫巧
- C语言中的奇技淫巧
- 渗透测试-奇技淫巧(一)--源IP地…
- C#Random得随机数求均值、方差、正态分布
- C#Random得随机数求均值、方差、正态分布
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)6:求整数的和与均值
- OpenCV中取ROI区域RGB的均值,求方差,ROI区域颜色是否明显区分
- JVM内存泄露与内存溢出的区别
- c++字符串读入写入小结
- SQL 语句(三)--------------数据查询(连接查询)
- 猪和回文
- pandas常用函数
- C++奇技淫巧(一):取位数,交换,比较,求均值
- 什么是IOC
- IAR 工程文件
- linux建立ssh、scp互信
- 验证码工具类
- 一个http请求的详细过程
- hdu 1754 I hate it 线段树维护最大值
- C语言实现继承和多态
- SQL 语句(四)--------------数据查询(嵌套查询)