C语言基础 位运算

---------------start reading---------------

前言

作为一个C语言的小白,位运算的重要性还不能深深地感受,不过等到以后接触了linux,实行大小端转换……就要运用到很多位运算,所以,位运算是非常重要的!

位运算实际上就是二进制的计算,下面我来介绍一下位运算的相关知识

~ 按位取反
10: 0000 1010
~10 = 1111 0101
*二进制的负数转正数,正数转负数,都是先取反再加一

& 按位与
每一位按布尔法则表,相同位为1则为1否则为0
10: 0000 1010
13 : 0000 1101
10&13= 0000 1000

| 按位或
相同位有一个为1则为1
10 : 0000 1010
12 : 0000 1100
10|13= 0000 1110

^ 按位异或
相同位上不一样为1,一样为0
10: 0000 1010
13: 0000 1101
10^13= 0000 0111

<< 按位左移
二进制数最高位向左移,右边补零(相当于扩大数字的2n倍)
10 : 0000 1010
10<<1 0001 0100
10<<2 0010 1000

>>按位右移
二进制数最低位向右移(扔尾数),左边补符号位(正数补0,负数补1)
10: 0000 1010
-10: 1111 0110
10>>2= 0000 0010
-10>>2= 1111 1101

下面我们来看一些常见的二进制位的操作

  1. 去掉最后一位 | (101101->10110) |
  2. 在最后加一个0 | (101101->1011010) |
  3. 在最后加一个1 | (101101->1011011) |
  4. 把最后一位变成1 | (101100->101101) |
  5. 把最后一位变成0 | (101101->101100) |
  6. 最后一位取反 | (101101->101100) |
  7. 把右数第k位变成1 | (101001->101101,k=3) |
  8. 把右数第k位变成0 | (101101->101001,k=3) |
  9. 右数第k位取反 | (101001->101101,k=3) |
  10. 取末三位 | (1101101->101) |
  11. 取末k位 | (1101101->1101,k=4) |
  12. 取右数第k位 | (1101101->1,k=4) |
  13. 把右边连续的1变成0 | (100101111->100100000) |
  14. 把右起第一个0变成1 | (100101111->100111111) |
  15. 把右边连续的0变成1 | (11011000->11011111) |

思考一下吧!!!


小可爱!!!!






具体操作


  1. 去掉最后一位 | (101101->10110) | x >> 1
  2. 在最后加一个0 | (101101->1011010) | x << 1
  3. 在最后加一个1 | (101101->1011011) | (x << 1)|1
  4. 把最后一位变成1 | (101100->101101) | x | 1
  5. 把最后一位变成0 | (101101->101100) | (x | 1)-1或者
  6. 最后一位取反 | (101101->101100) | x ^ 1
  7. 把右数第k位变成1 | (101001->101101,k=3) | x | (1 << (k-1))
  8. 把右数第k位变成0 | (101101->101001,k=3) | x & ~(1 << (k-1))
  9. 右数第k位取反 | (101001->101101,k=3) | x ^ (1 << (k-1))
  10. 取末三位 | (1101101->101) | x & 7
  11. 取末k位 | (1101101->1101,k=4) | x & ((1 << k)-1)
  12. 取右数第k位 | (1101101->1,k=4) | (x >> (k-1)) & 1
  13. 把右边连续的1变成0 | (100101111->100100000) | x & (x+1)
  14. 把右起第一个0变成1 | (100101111->100111111) | x | (x+1)
  15. 把右边连续的0变成1 | (11011000->11011111) | x | (x-1)

这就是一些基本的位运算的用法了,希望对大家有帮助。

-----------------end---------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值