C++奇技):取位数,交换,比较,求均值_c++多个数交替求平均-程序员宅基地

技术标签: 妙啊  

一、计算一个数转化成二进制后包含1的位数
写法:判断x&(x-1)计算了几次

程序:

int func(int x)
{
    
    int count = 0;
    while(x){
    
        count++;
        x = x&(x - 1);
    }
    return count;
}

二,取两个数的平均值
写法:取相同的位与,相当于相同位的和除以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));
}

五.不使用中间变量交换两数的值
思路:加减法容易溢出,异或就不必担心

注意交换函数如何通过形参改变实参!

两种方式:指针,引用

void swap1(int *a, int *b)
{
    
    *a = *a + *b;
    *b = *a - *b;
    *a = *a - *b;
}

void swap2(int &a, int &b)
{
    
    a = a^b;
    b = a^b;
    a = a^b;
}

//掌握了,nbo( ̄▽ ̄)d.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45709460/article/details/104617456

智能推荐

FFmpeg WAV文件转换_ffmpeg mp4转wav-程序员宅基地

文章浏览阅读4.2k次。FFmpeg WAV文件转换_ffmpeg mp4转wav

PMI-ACP练习题(17)_根据敏捷宣言以下哪一项属于敏捷原则-程序员宅基地

文章浏览阅读211次。A. Defect-stream and Value-stream B. Information-flow and information-owner C. Value-added and non value-added D. Sigma-ranked and Theta-prioritized 哈利的敏捷团队刚完成了其中一个产品的价值流程图。_根据敏捷宣言以下哪一项属于敏捷原则

开发者必知的8款App快速开发工具-程序员宅基地

文章浏览阅读2.5k次。“我有一个好创意,就差一个CTO……” “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了。” “APP版本迭代更新,都是企业的一道难关,没有一个一劳永逸的解决方式吗?” “一个Web开发者如何能快速适应移动互联网时代,用HTML5开发出一个APP呢?” “安卓、IOS双平台同时开发,程序员都累死在加班的路上了……”针对行业痛点,国内外涌现出众多APP开发工具,开发者只要有相..._开发app 开发工具

Centos curl command not found_centos cur command not found-程序员宅基地

文章浏览阅读1.2k次。试过了很多帖子的办法,各种安装都不行这个亲测可以: yum install -y curl 或者 sudo yum -y install curl_centos cur command not found

windows安装k8s-程序员宅基地

文章浏览阅读8.1k次。安装minikube minikube安装包下载 下载minikube-linux-amd64 执行命令安装chmod +x minikube && sudo mv minikube /usr/local/bin/查看版本以及是否安装成功minikube version用指定镜像地址启动minikube start --registry-mirr...

numpy 求矩阵非零元素的均值_非0平均 numpy-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏6次。假如我们有一个矩阵A,想要求其中的非零元素的均值,计算方式是:直接用mean来求的话,分母是所有元素的个数,不符合我们的要求。在matlab中,这样做:mean(AA(AA~=0))numpy:import numpy as npa = np.array([[0,1],[0,0]])exist = (a != 0)num = a.sum()mean_value = exist.sum()先用着这种方法吧,简洁的没找到。参考:https://blog.csdn.net/iteapo_非0平均 numpy

随便推点

VC画面闪烁及解决方法-程序员宅基地

文章浏览阅读832次。http://topic.csdn.net/u/20080219/21/0B5F0688-0651-45C4-AA99-7C19A0C2C900.html转载于:https://www.cnblogs.com/aoyihuashao/archive/2009/12/14/1623694.html_vc 子文档最大化时闪

科技和商业模式的发展真的会导致很多人失业吗?-程序员宅基地

文章浏览阅读393次。前言 众所周知,人类社会科技发展和新机器的发明,常常伴随着商业模式的变革。新的模式常常伴随着旧的模式的淘汰,或者并存,这可以让全社会的生产力和生活质量日渐增高。 随着新机器的层出不穷,每隔一段时间就出现很多人担心会出现所谓的“机器取代人类工作”的谬论,不过..._纺织机刚发明时的担忧

Java集合类之HashMap原理小结_hashtable不使用的原因?-程序员宅基地

文章浏览阅读138次。1. 认识HashMapHashMap是用来存储key-value键值对的数据结构。当我们创建HashMap的时候,如果不指定任何参数,它会为我们创建一个初始容量为16,负载因子为0.75的HashMap (load factor,记录数/数组长度)。当loadFactor达到0.75或指定值的时候,HashMap的总容量自动扩展一倍。它的底层采用Entry数组来保存所有的key-val..._hashtable不使用的原因?

layui表格全英文,跳页部分_laypage中英文切换-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏6次。因开发要求需要将layui table中的中文组件部分改为英文,其它地方修改layui.js文件即可,但是跳页部分缺没找到对应中文部分一开始想到js二次修改html的方式:var html = document.querySelectorAll('.layui-laypage-skip'); html[0].innerHTML = 'Page<input type="text" min="1" value="1" class="layui-input"><bu_laypage中英文切换

Ubuntu18.04安装教程——超详细的图文教程_ubuntu18.04安装教程——超详细的图文教程_ubuntu18.04安装教程——超详细的图文-程序员宅基地

文章浏览阅读10w+次,点赞109次,收藏964次。Ubuntu18.04镜像_ubuntu18.04安装教程——超详细的图文教程_ubuntu18.04安装教程——超详细的图文

如何用命令行运行脚本_脚本运行命令行方式怎么运行-程序员宅基地

文章浏览阅读1.5k次。如何用命令行运行脚本How to run python scripts on CMDC:…> 是windows提供的命令行模式,>>> python的交互式环境下。在命令行模式下可以执行Python进入python交互式环境,也可以执行 python “地址”\name.py 运行一个 .py脚本文件。..._脚本运行命令行方式怎么运行