小秦哥 发表于 2023-4-13 23:52:13

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

前言

在上一篇文章中,我们介绍了^运算符的高级用法,本篇文章,我们将介绍~ 运算符的一些高级用法。
https://img2023.cnblogs.com/blog/1511464/202304/1511464-20230413224749779-287902253.png
一、人物简介


[*]第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。
https://img-blog.csdnimg.cn/img_convert/7518c68e766a52eda30d44993a03a517.gif

[*]第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。
https://img-blog.csdnimg.cn/img_convert/f515f219bbb8c80ae8f59ba81c33a6cd.gif
二、相反数

https://img2023.cnblogs.com/blog/1511464/202304/1511464-20230413225011811-783726985.png
https://img2023.cnblogs.com/blog/1511464/202304/1511464-20230413225021063-1286160502.png

[*]我们可以利用负数的补码性质,来获得一个正数的相反数
#include <stdio.h>
int main()
{
    int a = 18;
    printf("相反数为%d\n", ~a + 1 );
    return 0;
}

[*]运行结果
https://img2023.cnblogs.com/blog/1511464/202304/1511464-20230413225031649-216488147.png
三、替换加法


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

[*]运行结果
https://img2023.cnblogs.com/blog/1511464/202304/1511464-20230413225040750-709286578.png
四、替换减法


[*]同样的减法也可以利用相反数的规则
[*]a - b = a +(~b+1) = a + ~b + 1
#include <stdio.h>
int main()
{
    int a = 23;
    int b = 7;
    printf("a - b = %d\n", a + ~b + 1 );
    return 0;
}

[*]运行结果
https://img2023.cnblogs.com/blog/1511464/202304/1511464-20230413225050665-66488286.png
小结

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

在下一篇文章中,我们将介绍位运算符
页: [1]
查看完整版本: 逍遥自在学C语言 | 位运算符~的高级用法