逍遥自在学C语言 | 位运算符~的高级用法

打印 上一主题 下一主题

主题 863|帖子 863|积分 2589

前言

在上一篇文章中,我们介绍了^运算符的高级用法,本篇文章,我们将介绍~ 运算符的一些高级用法。

一、人物简介


  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。


  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

二、相反数




  • 我们可以利用负数的补码性质,来获得一个正数的相反数
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 18;
  5.     printf("相反数为%d\n", ~a + 1 );
  6.     return 0;
  7. }
复制代码

  • 运行结果

三、替换加法


  • 利用相反数的规则,我们可以替换掉加法运算中的加号
  • a + b = a-(-b) = a - (~b+1)
  • 最终得到a + b = a - ~b - 1
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 23;
  5.     int b = 7;
  6.     printf("a + b = %d\n", a - ~b - 1 );
  7.     return 0;
  8. }
复制代码

  • 运行结果

四、替换减法


  • 同样的减法也可以利用相反数的规则
  • a - b = a +(~b+1) = a + ~b + 1
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a = 23;
  5.     int b = 7;
  6.     printf("a - b = %d\n", a + ~b + 1 );
  7.     return 0;
  8. }
复制代码

  • 运行结果

小结

通过这篇文章,我们学会了用位运算符~的3种高级用法
1、求一个整数的相反数
2、用~替代加法运算
3、用~替代减法运算

在下一篇文章中,我们将介绍位运算符

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小秦哥

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表