首页 > 其他分享 >逍遥自在学C语言 | 位运算符~的高级用法

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

时间:2023-04-13 23:02:30浏览次数:35  
标签:逍遥自在 高级 用法 运算符 int printf C语言 相反数

前言

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

一、人物简介

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

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

二、相反数

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

三、替换加法

  • 利用相反数的规则,我们可以替换掉加法运算中的加号
  • 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;
}
  • 运行结果

四、替换减法

  • 同样的减法也可以利用相反数的规则
  • 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;
}
  • 运行结果

小结

通过这篇文章,我们学会了用位运算符~的3种高级用法

1、求一个整数的相反数

2、用~替代加法运算

3、用~替代减法运算

在下一篇文章中,我们将介绍位运算符<<的一些高级用法。

标签:逍遥自在,高级,用法,运算符,int,printf,C语言,相反数
From: https://www.cnblogs.com/Wayne123/p/17316878.html

相关文章

  • 表达式之运算符
    表达式必须是由值和运算符组合起来的var声明变量的关键字sum变量的名字=赋值号1+1+2表达式varsum=1+1+2;console.log(sum);varusername="你"+"好";//输出你好运算符"!"感叹号非,取反,求反"||"或,如果前面的值为true则不执行后面的,否则会执行......
  • [每天例题]蓝桥杯 C语言 货物摆放
    货物摆放题目题目要求1.n=L×W×H2.本题的结果为一个整数。3.当n=4n=4时,有以下66种方案:1×1×4、1×2×2、1×4×1、2×1×2、2×2×1、4×1×1。由此,我们可以知道L、W、H为n的因子思路分析1.由于n过大,所以使用longlongint进行声明。2.先求出n的所有因数,......
  • c语言基础
    目录1、初识C语言1.1、第一个C语言程序1.2、变量与常量1.3、数据类型1.4、关键字2、分支与循环2.1、分支结构2.2、循环结构3、数组3.1、定义3.2、使用4、指针4.1、定义4.2、大小4.3、使用5、函数5.1、定义5.2、函数的分类5.3、形参与实参5.4、......
  • c语言贪吃蛇(2)关于蛇的函数封装
    hassnakenode():检测循环体内部是否含有蛇身结点,若有,则返回1(对应main输出蛇结点),否则判断点后移吗,再判断,之后返回0(不输出蛇结点)  addnode():创造新蛇结点,用malloc申请空间,并插入到尾结点之后。(尾插法)initsnake():创建初始头尾结点,malloc申请空间,方便后续蛇结点的添加,初始赋......
  • c语言贪吃蛇(1)地图实现
    采用循环输出来实现按照行和列的顺序两次for循环输出。代码:结果: ......
  • 编程打卡:C语言趣味编程习题做
    编程打卡:C语言趣味编程习题做百钱百鸡问题问题描述一只Cock卖5钱,Hen卖3钱,chicken卖0.33333333钱,真正工作的时候不要用浮点数存钱啊笨蛋!然后100钱买了100只鸡,问各买了多少只。设计思路解不定方程,穷举。两层循环遍历各种鸡的个数,第三种鸡可以直接相减得出结果,然后判......
  • C语言或C++语言的多个文件共同处理资料之方法
    C语言和C++语言在多个文件互相包含时会产生顺序方面的冲突,为了实现多个文件处理共同的资料,我说一个实现它的方法。把对象资料放在资料文件,在设置资料的方法文件中导入资料文件,然后在主文件中导入资料文件和方法文件,用方法文件的方法设置资料。它们的特点是依照先后顺序导入,不互相......
  • 关于百鸡百钱问题的C语言解决
    百鸡百钱问题 1.问题描述公鸡5钱一只,母鸡3钱一只,小鸡1钱三只,用一百个钱买一百只鸡,公鸡,母鸡,小鸡各多少只2.设计思路不妨先设公鸡数量为x母鸡数量为y小鸡数量为z则可列出方程:x+y+z=1005x+3y+1/3z=100又因为只有100钱所以x<20y<333.程序流程 4.代码#include<stdio.h>......
  • C语言二维数组
    #include<stdio.h>intmain(){/**inta[3][5];通常理解a为一个三行五列的矩阵*///二维数组的遍历inta[3][5];inti,j;for(i=0;i<3;i++){for(j=0;j<5;j++){a[i][j]=i*j;}}//二......
  • js new运算符
    1、new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。(通过构造函数来创建一个实例对象)2、new做了什么?   ①创建一个临时对象 ②为该临时对象添加属性 __proto__,将该属性链接至构造函数的原型对象(绑定原型)③将this指向该临时对象......