C语言:“~”操作符详解

这篇具有很好参考价值的文章主要介绍了C语言:“~”操作符详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

~:含义及用法举例

文章目录

  • 前言
  • 一、“~”是什么?
  • 二、原码、反码及补码
    • 1.简介
    • 2.用法举例
      • ①正整数
      • ②负整数
      • ③零
  • 三、“~”操作符
    • 1.简介
    • 2.用法举例
      • ①正整数
      • ②负整数
      • ③零

前言

本文在简单介绍原码反码补码的基础上,介绍“~”操作符的用法。


一、“~”是什么?

~:一种单目操作符,即对一个数的二进制按位取反。

二、原码、反码及补码

1.简介

一个整数的二进制表示有3种:原码、反码及补码。

最高位为符号位,0为正,1为负。

整数在内存中存储的是补码。

2.用法举例

①正整数

原码、反码、补码相同。

例如

1:

00000000 00000000 00000000 00000001(原码)

00000000 00000000 00000000 00000001(反码)

00000000 00000000 00000000 00000001(补码)

②负整数

原码 --------------------------------------------> 反码 --------------------------------------------> 补码

       (符号位不变,其他位按位取反)                            (加一)

原码 <-------------------------------------------- 反码 <-------------------------------------------- 补码

       (符号位不变,其他位按位取反)                            (减一)

例如

-1:

10000000 00000000 00000000 00000001(原码)

11111111 11111111 11111111 11111110(反码)

11111111 11111111 11111111 11111111(补码)

③零

这里要分为“正零”与“负零”讨论。

正零(可以参展①正整数的取法):

00000000 00000000 00000000 00000000(原码)

00000000 00000000 00000000 00000000(反码)

00000000 00000000 00000000 00000000(补码)

负零(可以参展②负整数的取法):

10000000 00000000 00000000 00000000(原码)

11111111 11111111 11111111 11111111(反码)

00000000 00000000 00000000 00000000(补码)

三、“~”操作符

1.简介

按(二进制)位取反,即把所有二进制位(包括符号位)中数字,1变成0,0变成1。

2.用法举例

由于整数在内存中存储的是补码,故使用"~"(按位取反)时需要转化为补码进行运算。此时,得到的结果仍为补码,需要进一步转化为原码,得到最终输出值。

①正整数

例如

1:

00000000 00000000 00000000 00000001(补码)

~1:

11111111 11111111 11111111 11111110(补码)

11111111 11111111 11111111 11111101(反码)

10000000 00000000 00000000 00000010(原码)

即~1的输出结果为-2

代码如下:

#include <stdio.h>
int main()
{
	int a = 1;
	printf("%d\n", ~a);
	return 0;
}

输出结果:-2

②负整数

例如

-1:

11111111 11111111 11111111 11111111(补码)

~-1:

00000000 00000000 00000000 00000000(补码)

00000000 00000000 00000000 00000000(反码)

00000000 00000000 00000000 00000000(原码)

即~-1的输出结果为0

代码如下:

#include <stdio.h>
int main()
{
	int a = -1;
	printf("%d\n", ~a);
	return 0;
}

输出结果:0

③零

由于正零与负零的补码相同,故不加以区分。

0:

00000000 00000000 00000000 00000000(补码)

~0:

11111111 11111111 11111111 11111111(补码)

11111111 11111111 11111111 11111110(反码)

10000000 00000000 00000000 00000001(原码)

即~0的输出结果为-1

代码如下:

#include <stdio.h>
int main()
{
	int a = 0;
	printf("%d\n", ~a);
	return 0;
}

输出结果:-1


总结

以上就是关于“~”的详解,涉及原码、反码及补码仅简单介绍,相关内容可参考计算机组成原理。

希望可以帮助大家,如有错误,望指出,谢谢!文章来源地址https://www.toymoban.com/news/detail-693225.html

到了这里,关于C语言:“~”操作符详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言---操作符详解

    算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号操作符 下标引用、函数调用和结构成员。 移位操作符,移动的是二进制位。 警告:对于移位运算符,不要移动负位数,这个是标准定义的。 3.1.1、原码、反码、补码介绍 整数

    2024年02月07日
    浏览(30)
  • 【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

    目录 一、^ 是什么(^称为异或) 二、^的规律(特点) 三、可利用^秒杀的常见例题(重点) 1、消失的数字  2、不一样的人生密码 3、交换两个数(不能创建中间变量) 4、找出只出现一个的两个数字 是一种操作符, 针对二进制异或而言的 ,两个数对应的二进制位相同,异或

    2024年02月16日
    浏览(56)
  • 【 c 语言 】赋值操作符详解

    🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 引言: 在C语言编程中,赋值操作符是我们日常编程中不可或缺的一部分。它不仅是初始化变量、修改

    2024年04月09日
    浏览(28)
  • C语言操作符详解(下)

    在C语言操作符详解(上)中,已经详细系统的介绍了各种操作符及其使用场景。 接下来,本文将逐步介绍编译器执行这些代码背后所做的事情、操作符优先级、结合性以及求值顺序! 表达式求值的顺序一部分是由 操作符的优先级和结合性决定。 同样,有些表达式的操作数在

    2024年02月05日
    浏览(29)
  • c语言:操作符详解(上)

    算术操作符: + 、- 、* 、/ 、% 移位操作符: 位操作符: | ^ 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、= 、= 、= 、|= 、^= 单目操作符: !、++、–、、*、+、-、~ 、sizeof、(类型) 关系操作符: 、= 、 、= 、 == 、 != 逻辑操作符: 、|| 条件操作符:? : 逗号表达式: , 下标引用:

    2024年03月16日
    浏览(31)
  • 初阶C语言-操作符详解(上)

    “不飞则已,一飞冲天;不鸣则已,一鸣惊人。” 今天,我们一起来学习一下操作符的相关知识。 算术操作符 + - * / % 移位操作符 位操作符 | ^ 赋值操作符 = += -= *= /=... 单目操作符 ! sizeof ++ -- ... 关系操作符 = = == != 逻辑操作符 || 条件操作符 ? : 逗号表达式 , 下标引用、函数

    2024年02月13日
    浏览(27)
  • C语言最全操作符详解✌️

    C语言的一系列操作符中,其中一组叫双目操作符,也叫算数操作符。分别是:+,–,*,/,%。 ①+和– +和–的用途与数学中基本一致,用来做加法和减法。例如: 我们可以发现,他们之所以叫双目操作符,是因为他们的左边和右边一共有两个操作数。 ②* *运算符也与数学

    2024年02月21日
    浏览(29)
  • 初阶C语言-操作符详解(下)

    🌞 “等春风得意,等时间嘉许!” 接下来,我们把操作符没学完的继续学完! 📖我们来看一下下面这段代码: 关系操作符: = = !=(用于测试不相等) ==(用于测试相等) 注:不要把 == 和 = 混起来❗ ✅ == 用于测试相等, = 用于赋值。 📖逻辑操作符: (逻辑与操作符)

    2024年02月13日
    浏览(29)
  • 爱上C语言:操作符详解(上)

    🚀 作者:阿辉不一般 🚀 你说呢: 生活本来沉闷,但跑起来就有风 🚀 专栏:爱上C语言 🚀 作图工具:draw.io ( 免费开源的作图网站) 如果觉得文章对你有帮助的话,还请点赞,关注,收藏支持博主,如有不足还请指点,博主及时改正,感谢大家支持!!! 大家好啊😉!今

    2024年02月04日
    浏览(32)
  • 初阶C语言——详解操作符(1)

    Hello,我们又见面了,最近不知道大家是否在持续输出代码呢?代码能力是否提高了呢?今天让我们来一起学习操作符,操作符在我们学习语言中很重要,我们要知道每个操作符的作用和用法,下面开始我们的学习。 操作符分类: 算术操作符 移位操作符 位操作符 赋值操作符

    2024年02月12日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包