一、计算一个数转化成二进制后包含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;
}
牛逼!!!
————————————————
本文介绍了C++中的一些巧妙编程技巧,包括计算二进制中1的位数、编程风格建议、不使用除法取两数平均值、无条件找到较大数、三数取中以及不借助中间变量交换两数的方法。通过这些技巧,可以提升代码效率和简洁性。
:取位数,交换,比较,求均值&spm=1001.2101.3001.5002&articleId=75093178&d=1&t=3&u=c85ad3a1e2064e6fb9f31940a503339b)
1万+

被折叠的 条评论
为什么被折叠?



