C/C++中变量按位操作

8 篇文章 1 订阅
7 篇文章 0 订阅

为什么需要按位操作?
1、在嵌入式开发中,寄存器需要按位操作,如io控制;
2、一些组合配置的实现,如下是qt的源代码:
枚举定义为1、2、4、8…,其实就是占用一个配置变量中不同的位,方便两个位之间组合以及单独设置。
看最后一行: AlignCenter = AlignVCenter | AlignHCenter,就是组合配置

enum AlignmentFlag {
        AlignLeft = 0x0001,
        AlignLeading = AlignLeft,
        AlignRight = 0x0002,
        AlignTrailing = AlignRight,
        AlignHCenter = 0x0004,
        AlignJustify = 0x0008,
        AlignAbsolute = 0x0010,
        AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute,

        AlignTop = 0x0020,
        AlignBottom = 0x0040,
        AlignVCenter = 0x0080,
        AlignBaseline = 0x0100,
        // Note that 0x100 will clash with Qt::TextSingleLine = 0x100 due to what the comment above
        // this enum declaration states. However, since Qt::AlignBaseline is only used by layouts,
        // it doesn't make sense to pass Qt::AlignBaseline to QPainter::drawText(), so there
        // shouldn't really be any ambiguity between the two overlapping enum values.
        AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter | AlignBaseline,

        AlignCenter = AlignVCenter | AlignHCenter
    };

3、一些节省空间的开关控制,如一个32位的变量,即可保存32个开与关的控制,且通过位操作可做到相互不影响。(其实和1中说的一样)

下面对一个32位的变量进行操作,写入、读取其中的第5位(从右边数)。

一、按位写入1

uint32_t writeBit (1 << 5)      // 第5位的掩码
uint32_t value = 0x12341234;
// 设置第5位为1
value |= writeBit;

原理就是原值与掩码… 00010000进行按位相与,与0相交的位还是等于原来的值,与1相交的位则变为1。

二、按位写入0

uint32_t writeBit (0 << 5)      // 第5位的掩码
uint32_t value = 0x12341234;
// 设置第5位为1
value &= ~writeBit;

原理就是按位取反相交,掩码… 00010000取反后为…11101111,按位相交,与为1的位相交保持原值,与为0的位相交为0。

三、按位读

uint32_t readBit (0 << 5)      // 第5位的掩码
uint32_t value = 0x12341234;
// 设置第5位为1
bool readvalue = (value & readBit) != 0;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在MATLAB安装mingw-w64 C/C++编译器,可以按照以下步骤进行操作: 1. 下载mingw-w64编译器,可以从官网下载:https://mingw-w64.org/doku.php/download 2. 安装mingw-w64编译器,选择合适的安装路径和选项。 3. 打开MATLAB,进入“Home”选项卡,点击“Add-Ons”按钮。 4. 在“Add-Ons”页面,选择“Get Hardware Support Packages”。 5. 在“Hardware Support Packages”页面,搜索“mingw-w64”,选择“MinGW-w64 C/C++ Compiler”。 6. 点击“Install”按钮,等待安装完成。 7. 安装完成后,可以在MATLAB使用mingw-w64编译器进行C/C++代码的编译和运行。 希望这些步骤能够帮助你成功安装mingw-w64 C/C++编译器。 ### 回答2: 首先,要安装Matlab软件。此外,还需要确保计算机系统符合Matlab和MinGW-W64的系统要求,比如操作系统的位数,C和C++编译器等。 一般情况下,可以从Matlab官方网站获取最新的MinGW-W64版本。在安装MinGW-W64时,需要注意一些选项,比如选择安装目录和安装的组件。 安装完MinGW-W64后,需要将其路径添加到Matlab的系统环境变量。具体步骤如下: 1. 在Matlab命令窗口输入“mex -setup” 2. 选择一个C++编译器,比如MinGW-W64 3. 输入MinGW-W64的安装路径,并确认 如果安装成功,就可以开始编译C和C++代码了。在Matlab命令窗口输入“mex 文件名.cpp”即可编译代码,生成可执行文件。 需要注意的是,Matlab和MinGW-W64的版本和配置可能会影响代码的编译和运行。因此,建议定期检查和更新软件版本,以确保其正常工作。同时,还需要了解基本的C和C++语言知识,才能编写和调试代码。 ### 回答3: 首先,先下载MinGW-w64 C/C++编译器,可以从MinGW-w64的官方网站下载,选择对应的系统版本进行下载。下载完成后进行安装,安装时需要选择对应的系统位数(32位或64位)。 然后,打开MATLAB软件,在命令窗口输入“mex -setup c++”,选择MinGW-w64编译器路径。如果系统在PATH环境变量已经添加了MinGW-w64的bin路径,matlab会自动找到编译器路径,否则需要手动输入编译器路径。接着,在命令窗口输入“mex -setup”,会弹出选择默认编译器的对话框,选择刚才安装的MinGW-w64编译器即可。 最后,测试编译器是否安装成功,可以在MATLAB命令窗口输入“mex -g filename.c”,其filename.c是要编译的c文件名。如果成功,则会在当前目录下生成mex文件,即编译后的可执行文件。 在安装和使用MinGW-w64 C/C++编译器时需要注意以下几点: 1. 安装路径不要存在文或者空格,保持路径简单易懂。 2. 要根据自己的系统位数选择下载对应的MinGW-w64版本。 3. 在设置编译器路径时,需要注意路径的前后顺序,路径分隔符要使用'/'。 总之,MATLAB安装MinGW-w64 C/C++编译器的过程并不难,只要按照上述步骤进行操作,即可完成安装,并可以进行编译和执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值