在实际开发中,常常用移位操作代替乘除法,因为一般情况下:

1.从效率上看,使用移位指令有更高的效率,因为移位指令占2个机器周期,而乘除法指令占4个机器周期。

2.从硬件上看,移位对硬件更容易实现,所以会用移位,移一位就乘2,这种乘法当然考虑移位了。

详细文章可以参考这个博客:https://blog.csdn.net/louxuez/article/details/24434207

下面想补充下,常使用移位操作增删对应的比特位,一个效率更高,第二个节省内存。下面举两个例子分别说明:

1.移位操作之增加对应比特位

这个比较好理解,也比较容易操作,直接位与就是了。

例子:将int类型的32位中的第1位和第三位变成1,即0x0000000a 十六进制a = 1010

#include <stdio.h>#define ONE  1
#define TRE  3int main(void)
{int temp;temp = (1 << ONE) | (1 << TRE);printf("temp=0x%x\n",temp);return 0;
}

结果:

2.移位操作之删除对应比特位

将int类型temp的32位中第三位变成0,即0x0000000a 变成0x00000002  即十六进制a = 1010 --> 0010

#include <stdio.h>#define ONE  1
#define TWO  2
#define TRE  3
#define FOER 4
#define FIVE 5int main(void)
{int temp = 0xa;temp = temp & ~(1 << TRE); //TRE位清0printf("temp=0x%x\n",temp);return 0;
}

结果:

C语言移位操作之增删对应比特位相关推荐

  1. c语言比特和字节,详解 比特(位,bit),字节(Byte),字符的区别 *(转)

    比特(位):英文bit,是计算机晶体管的一种状态(通电与断电).就是0与1,真与假,是计算机最基本的传输单位. 示例: 2bit : 10; 4bit : 1111; 8bit : 1111 1111 ...

  2. 反转比特位(文章最后有干货)【转】

    转自:https://blog.csdn.net/wuxianglonghaohao/article/details/21602305 http://www.newhottopic.com/2014/ ...

  3. Rowhammer漏洞致“比特位翻转”,如何解决?

    读者们也许会觉得Rowhammer和比特位翻转是音乐及舞蹈行业的专业术语,但其实他们指的是存在于动态随机访问存储(DRAM)--大多数电子设备中都存在的一种核心组件中的某种非常严重的漏洞.随着驱动器中 ...

  4. 《LeetCode力扣练习》第338题 比特位计数 Java

    <LeetCode力扣练习>第338题 比特位计数 Java 一.资源 题目: 给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ...

  5. CAN 总线 之六 BOSCH CAN 比特位填充(编码规则)、归零编码(RZ)和不归零编码(NRZ)

    帧格式   在 CAN 总线中,为了确保足够的转换以保持同步,在相同极性的 5 个连续位之后使用位填充.下面以 标准格式来进行说明,先看下面标准格式的帧的图示: 在某些文档中,将 CAN 帧分为以下部 ...

  6. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(9/E) - 比特位操控指令(BMI1 BMI2)

    Bit Manipulation Instructions (BMI1 & BMI2) 指令 描述 ANDN 格式: ANDN r32a, r32b, r/m32 第一源操作数(r32b)取反 ...

  7. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令

    Bit and Byte Instructions 比特指令测试并修改操作数的某些比特位:字节指令设置字节操作数的值,用来指示EFLAGS标志寄存器的状态. 指令 描述 BT 测试比特位(将要测试的比 ...

  8. LeetCode每日一题:比特位计数(No.338)

    题目:比特位计数 给定一个非负整数 num.对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回. 复制代码 示例: 输入: 2 输出: [0,1, ...

  9. Java字节转换为比特位及相关

    文章目录 字节转换为比特位字串 直接上代码: 测试: 说明: 字节(byte).比特位.整型(int) 原码.反码和补码 移位运算符 >> 有符号,右移 >>> 无符号, ...

最新文章

  1. 脚本路径问题_dirname
  2. vs2017开发Node.js控制台程序
  3. 图像的线性变换的原理及OpenCV代码实现~
  4. Vue中绑定值与字符串拼接以及结合三目表达式实现是否为空判定的使用
  5. Python3 replace()实现字符串替换
  6. html文本打印lt;igt;字段,Web前端学习第九课,使用文本格式化标签
  7. 软件项目组织管理(六)项目时间管理
  8. 一、node.js搭建最简单的服务器
  9. 【数学】MORE XOR
  10. bash的快捷键、特殊参数、历史命令、相关文件
  11. 如何让jquery-easyui的combobox像select那样不可编辑
  12. Android移动应用基础教程 【程序活动单元Activity】
  13. Web3.0世界知识体系分享-免费自动批量生成NFT图片和批量部署NFT
  14. 花书——PyTorch版本
  15. Windows 安装 Windows 版 iCloud 之后我的电脑里多了个 iCloud 照片图标
  16. 重启计算机按哪几个键,电脑快捷重启按什么键
  17. 制药企业计算机系统urs,制药设备urs.pdf
  18. 川奇吕电商概括短视频账号策划运营方案怎么写
  19. python猫狗大战讲解_机器学习 | 猫狗大战
  20. 系统性能指标:吞吐量(TPS)、QPS、并发数、响应时间(RT)概念

热门文章

  1. 【Linux】部署web项目
  2. matplotlib设置中文字体
  3. flink遇到的错误以及处理
  4. 个人收藏的常用前端网站
  5. java解析nmea_Java Marine API – 寻找NMEA数据
  6. 安川5系7系伺服 电路 驱动器原理图
  7. 【GaussDB数据库----连接】
  8. geotools文件转换
  9. 年度总结——业精于勤,行成于思
  10. Linux之cmatrix软件安装及使用