请问C语言中位运算有什么用啊,一般都在哪些项目会使用到?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请问C语言中位运算有什么用啊,一般都在哪些项目会使用到?

2017-11-30 20:49:55 4219 6

想了解一下位运算的用途,希望大神们能帮我解惑。

取消 提交回答
全部回答(6)
  • 叶提
    2019-07-17 21:46:50
    已采纳

    位运算速度比较快,移位就可以,对性能要求比较高的算法或逻辑会常用

    1 0
  • nothingfinal
    2019-07-17 21:46:51

    节省内存,单片机中使用较多

    0 0
  • xumaojun
    2019-07-17 21:46:51

    节省内存,单片机中使用较多

    0 0
  • calm86104
    2019-07-17 21:46:51

    有意思的问题,我来小答一下,以抛砖引玉。
    目前我所知道的有两个:
    第一种情况: 如上面同学所说,提升运算速度。
    举个例子:
    int i = 2;
    int k = i * 1024;

    上面这个例子,在计算 k 的值,一般我们都会这么写。
    这么写有问题吗?
    当然没有问题,还相当标准。
    但是这么写对性能没有什么帮助,如果我们清楚位运算会更快,那么驱动或者硬件的老手就会这么写:
    k = i << 10;

    当然性能上,对于大型服务器,不会因为你写了这么一句话,就会提升很多,但是如果是单片机的话,可能就会快很多。
    还有人问,大部分我可能不是 乘以 1024,而是 乘以 1000,这种情况岂不是不行了。

    我回答是:分情况。如果你的数值是约数,不需要精确的话,那么你依然可以这么写,如果是需要精确数值的话,恐怕不行。

    第二种情况:减少内存损耗,好吧,也是因为单片机的原因。
    举个例子:如果我有 4096 个成员,要标志,4096 个成员,是男是女(比如 1 是男,0 是女),大部分情况下,我们会这么写:
    unsigned char member[4096]
    内存损耗为 sizeof(member) == 4096 个字节

    但是如果我们可以这么定义:
    uint32_t member[128]
    内存损耗为 sizeof(member) == 128 * 4 = 512 个字节 = 4096 位
    也就是说,每一位代表一个成员的性别,1 是男,0 是女,是不是会节省很多内存呢?

    0 0
  • 靠谱的小号
    2019-07-17 21:46:50

    一个简单的应用:设计options。比如,网络状态

    typedef NS_OPTIONS(NSUInteger, NetworkOptions) {

    Network_None = 0,
    Network_2G = 1<1,
    Network_3G = 1<2,
    Network_4G = 1<3,
    Network_wifi = 1<4,

    };

    当需要在弱网或无网状态下进行某些操作,那么可以用Network_None|Network_2G|Network_3G表示

    1 0
  • 落叶梧桐雨
    2019-07-17 21:46:50

    在java里面位运算你可以看下Integer类中的几个方法,几乎大部分都是用的位运算,因为位运算是在硬件层面就可以直接计算的所以更快,如果采用简单的迭代和加减乘除的话效率不在一个层级

    0 0
滑动查看更多
相关问答

17

回答

教你如何简单将OSS bucket挂载成为阿里云ECS服务器本地盘

梦丫头 2017-02-17 14:01:12 38345浏览量 回答数 17

9

回答

阿里云ECS安装虚拟主机系统DirectAdmin开心版百分百成功的方法

hxs 2014-05-26 20:05:30 34881浏览量 回答数 9

10

回答

AMH5.0安装脚本顺便提醒是收费的每月5元。

是非良人 2014-08-31 15:13:27 21073浏览量 回答数 10

8

回答

阿里云服务器内网传输使用指南

任逍遥 2013-03-22 00:05:42 31228浏览量 回答数 8

3

回答

2020年05月编程排行榜-C语言继2015年,重新成为编程排行榜第一名

huc_逆天 2020-05-06 13:43:42 36766浏览量 回答数 3

5

回答

上传到OSS的文件md5hash值如何获取?!!

asker 2015-08-05 16:52:10 22295浏览量 回答数 5

14

回答

C语言基础 【精品问答合集】

我是管理员 2018-07-13 15:37:00 27042浏览量 回答数 14

10

回答

阿里云centos静默安装oracle

美味的小鱼 2014-08-12 14:23:44 30972浏览量 回答数 10

6

回答

安装scrapy时出错errorcommandgccfailedwithexitstatus1

wangjifeng 2015-06-01 21:04:27 19692浏览量 回答数 6

5

回答

C语言算法 【精品问答合集】

我是管理员 2018-07-13 15:51:28 27392浏览量 回答数 5
+关注
友人-a
一只正在向IT世界树上疾速攀爬的蜗牛
2
文章
1
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载