编程新手必看:彻底理解!与~的取反操作
在编程和计算机科学的语境中,! 和 ~ 都是取反操作符,但它们的应用方式和效果存在显著的区别。下面将从定义、应用场景、作用原理及示例等方面对 ! 和 ~ 进行详细解析。
一、定义
-
!(逻辑非运算符)在C语言、Java等多数编程语言中,
!是一个逻辑非运算符,用于对布尔值(或可以隐式转换为布尔值的表达式)进行取反操作。当操作数为真(即非零值)时,!运算符的结果为假(即0);反之,当操作数为假(即0)时,!运算符的结果为真(即非零值,但具体值可能因语言而异,如在C语言中为1)。 -
~(按位取反运算符)~是一个按位取反运算符,它作用于整数类型的数值,将数值的二进制表示中的每一位进行取反操作,即0变为1,1变为0。需要注意的是,按位取反运算通常是在补码形式下进行的,这意味着对于负数,其取反操作的结果可能会与直观理解有所不同,因为涉及到符号位的翻转和可能的整数溢出。
二、应用场景
-
!的应用场景- 布尔值取反:在条件判断、循环控制等场景中,用于反转布尔表达式的值。
- 隐式类型转换:在某些情况下,
!会将其操作数隐式转换为布尔值,然后进行取反操作。这种转换规则因语言而异,但通常非零值被视为真,零值被视为假。
-
~的应用场景- 位操作:在需要对整数进行位级操作的场景中,如位掩码、位旋转、位计数等,
~运算符扮演着重要角色。 - 特定算法实现:在某些特定的算法实现中,如哈希函数、加密算法等,
~运算符可能被用于生成特定的位模式或执行复杂的位运算。
- 位操作:在需要对整数进行位级操作的场景中,如位掩码、位旋转、位计数等,
三、作用原理
-
!的作用原理!运算符通过检查其操作数的布尔值来决定返回的结果。如果操作数为真(非零),则返回假(0);如果操作数为假(0),则返回真(非零,具体值依语言而定)。这个过程中可能涉及到隐式类型转换,即将非布尔类型的操作数转换为布尔类型。 -
~的作用原理~运算符通过对其操作数的二进制表示进行逐位取反来得到结果。这个操作是在补码形式下进行的,因此对于负数来说,其取反结果可能会超出原始类型的表示范围,导致溢出。此外,由于符号位的翻转,负数的取反结果可能会变得难以直观理解,因为需要考虑到补码表示法和可能的整数溢出问题。
四、示例
以C语言为例,以下示例展示了 ! 和 ~ 运算符的使用和效果:
#include <stdio.h> int main() { int a = 0, b = 5, c = -10; // ! 的使用示例 int result_a = !a; // 0 变为 1 int result_b = !b; // 非0值(5)变为 0 printf("!a = %d, !b = %d\n", result_a, result_b); // ~ 的使用示例 int result_c = ~c; // -10 的二进制表示取反(注意是补码形式),结果可能超出 int 范围 // 由于 -10 的补码表示(在 32 位系统中)取反后得到的结果可能是一个大整数(负数),这里只展示基本用法 printf("~c 的原始二进制取反结果可能难以直接显示,但在某些上下文中会有特定效果\n"); // 为了简化理解,这里演示一个正数的按位取反 unsigned int positive_num = 5; // 无符号整数,避免负数取反的复杂性 int result_positive = ~(int)positive_num; // 强制类型转换后进行按位取反 printf("~((int)5) = %d\n", result_positive); // 结果依赖于整数类型和位宽 return 0;
}
注意:由于 -10 的取反结果涉及到补码表示和可能的整数溢出,因此在实际输出时可能无法直接显示为一个直观的整数值。此外,为了简化理解,示例中演示了一个正数的按位取反操作。
我会以“时”为尺,丈量自己的进步,用“嘉”言“嘉”行,努力珍惜时间,向着她一步步迈进!(眼中闪烁着坚定的光芒,透露出对未来的决心和期待)
respect!
相关文章:
编程新手必看:彻底理解!与~的取反操作
在编程和计算机科学的语境中,! 和 ~ 都是取反操作符,但它们的应用方式和效果存在显著的区别。下面将从定义、应用场景、作用原理及示例等方面对 ! 和 ~ 进行详细解析。 一、定义 !(逻辑非运算符) 在C语言、Java等多数编程语言中&…...
【LeetCode】54. 螺旋矩阵
螺旋矩阵 题目描述: 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2:…...
计算机毕业设计 奖学金评定管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
【JavaWeb项目】——外卖订餐系统之商家添加餐品、修改餐品、查询热卖餐品、查询出售车、进行发货操作
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
制作抖音私信卡片 - 一键调起并跳转微信二维码
抖音私信图文卡片,点击可以直接一键添加微信 可生成无风险链接,使用苹果手机转发创建出卡片 抖音内点击可以直接调起微信跳入小程序展示微信二维码...
赋能未来园区:TSINGSEE视频AI智能管理平台如何引领园区管理智慧化转型
一、建设背景 随着经济的不断发展,园区产业集聚发展已成为趋势,园区逐渐成为产业聚集的重要载体。目前,国内现有的大部分园区的管理方式比较粗放、单一,范围局限于安全、环境等方面且不成体系,并且没有覆盖到应急、消…...
Linux逻辑卷管理LVM
系列文章目录 提示:仅用于个人学习,进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装(rpm、install) 5.Linux账号管理 6.Linux文件/目录权限管理 7.Linux磁盘管理/文件系统 提示&a…...
团队诊断工具TDS
希典梁开广老师引进的团队诊断问卷TDS(Team Diagnostic Survey)是基于卓越团队6个条件模型开发的,是用于诊断团队有效性的测评工具,其建构过程严格遵循心理测量学原理。可以帮助企业觉察团队优劣势,找到提升与发展机会,明确和强化…...
DC-5靶机渗透测试
DC-5靶场 文章目录 DC-5靶场信息收集漏洞发现漏洞利用 --- 日志文件包含漏洞利用 --- 文件包含过滤器链的RCEshell反弹权限提升 信息收集 使用--scriptvuln扫描发现了一个thankyou.php界面 感觉会有问题,前往访问网站信息 漏洞发现 来到thankyou.php界面ÿ…...
16、电科院FTU检测标准学习笔记-基本性能2
作者简介: 本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验 在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验 ———————————————————…...
MySQL——使用Python操作MySQL
文章目录 安装PyMySQL使用PyMySQL操作MySQL 在Python中操作MySQL数据库时,我们使用较多的库是 PyMySQL,如果你选择使用 PyMySQL库,那么首先需要通过pip安装它。pip install pymysql命令就是用来安装PyMySQL的。 安装PyMySQL 1.打开你的命令行工具&…...
Flink的DataStream状态管理
目录 键控数据流(Keyed DataStream) 键控状态(Keyed State) 值状态(ValueState) 列表状态(ListState) 归约状态(ReducingState) 聚合状态(AggregatingState) 映射状态(MapState) 状态生存时间(TTL) 算子状态(Operator State) 广播状态(Broadcast S…...
Daiqile SQL注入绕过
上源码。 <?php header("Content-type: text/html; charsetutf-8"); require db.inc.php;function dhtmlspecialchars($string) {if (is_array($string)) {foreach ($string as $key > $val) {$string[$key] dhtmlspecialchars($val);}}else {$string str_…...
用Python轻松移除PDF中的注释
PDF文档因其跨平台的兼容性和格式稳定性而备受青睐。然而,随着文档在不同用户间的流转,累积的注释可能会变得杂乱无章,甚至包含敏感或过时的信息,这不仅影响了文档的清晰度和专业性,还可能引发隐私风险。因此ÿ…...
51单片机—串口
一、 串口基本认知 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方 式的扩展接口。串行接口(Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简 单&a…...
vue 通过 this.$refs 创建方法i向子组件传参让子组件更新
在Vue中,this.$refs主要用于访问子组件的实例或者DOM元素。通过this.$refs,你可以调用子组件的方法或者访问其数据属性,从而实现子组件的更新。以下是一些使用this.$refs向子组件传参并触发更新的常见方法: 1. 直接调用子组件的方…...
Java设计模式以及代理模式
一、设计模式 1.JAVA六大设计原则 JAVA设计模式提供六个基本原则,分别是: 开闭原则(OCP) - The Open-Closed Principle单一职责原则(SRP) - Single Responsibility Principle里氏替换原则(LSP) - Liskov Substitution Principle依赖倒置原则(DIP) - D…...
Elasticsearch 索引库管理:查询、修改与删除
Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,它允许用户通过 RESTful API 进行数据的索引、搜索、更新和管理。在 Elasticsearch 中,索引库(Index)是存储数据的基本单元。本文将介绍如何查询、修改和删除 Elasticsea…...
视频大怎么压缩小?分享3种视频压缩方法
视频大怎么压缩小?视频文件过大时,压缩视频不仅能帮助我们节省宝贵的存储空间,使其更容易在有限容量的设备中保存,还能显著提升传输效率,特别是在网络条件有限或需要快速分享视频内容的场合。通过专业的压缩工具&#…...
springboot项目搭建集成 redis/跨域/远程请求
目录 一,创建maven项目 1,左上角file > new > maven project 2,next 到 创建 Group id 和 Artifact id编辑编辑 二,配置springboot 1,配置pom文件, 2,创建启动类 3ÿ…...
避坑指南:OpenClaw安装Qwen3.5-9B常见的5个配置错误
避坑指南:OpenClaw安装Qwen3.5-9B常见的5个配置错误 1. 为什么需要这篇指南 上周我在本地部署OpenClaw对接Qwen3.5-9B时,经历了从满怀期待到崩溃边缘的全过程。本以为按照官方文档就能轻松搞定,结果在npm权限、端口冲突、模型地址配置等环节…...
终极指南:Helix Toolkit - 专业级.NET 3D图形框架完全解析
终极指南:Helix Toolkit - 专业级.NET 3D图形框架完全解析 【免费下载链接】helix-toolkit Helix Toolkit is a collection of 3D components for .NET. 项目地址: https://gitcode.com/gh_mirrors/he/helix-toolkit 你是否曾为.NET平台上的3D图形开发感到困…...
Grafici-GFX:Arduino嵌入式数据可视化轻量库
1. Grafici-GFX 库概述:面向嵌入式显示终端的数据可视化引擎Grafici-GFX 是一个专为 Arduino 平台设计的轻量级数据可视化库,其核心定位并非通用图形渲染,而是在资源受限的微控制器上实现高效、可配置的数据曲线绘制与状态呈现。该库不直接操…...
Qt Modbus 报文构建实战:QModbusRequest构造与sendRawRequest发送详解
1. Qt Modbus开发环境搭建与基础概念 在工业自动化领域,Modbus协议就像设备之间的"普通话",而Qt Modbus库则是我们与设备对话的翻译器。我刚开始接触这个领域时,花了一整天时间才搞明白如何正确发送一个简单的控制指令。下面分享我…...
IDM 下载管理器 下载安装
链接: https://pan.baidu.com/s/1IJ4LrAAZCfVvPyZl9VVg8g 提取码: j9c9解压前请退出所有杀毒软件或添加排除项!!!此文件无毒,可放心使用!!!此文件为免费开源绿色软件,请勿利用于商业…...
23岁+计算机人注意!困在传统开发?这份大模型报告助你职场逆袭,薪资翻倍!
如果你是23岁以上的计算机相关从业者,正困在传统开发瓶颈里、想跳槽无优势、想转行怕踩坑,或是盯着职场晋升、薪资翻倍却找不到突破口,那这篇文章和这份重磅报告,一定要认真看完。 当下人工智能全面落地,大模型早已不是…...
MBTI职业性格测试
...
革新性智能漫画翻译工具:解决本地化效率痛点,释放创作价值
革新性智能漫画翻译工具:解决本地化效率痛点,释放创作价值 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项…...
Unity游戏翻译革命:XUnity.AutoTranslator完全指南
Unity游戏翻译革命:XUnity.AutoTranslator完全指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而错过优秀的日本Unity游戏?是否厌倦了等待官方汉化却遥遥…...
Windows远程桌面防爆破实战:用PowerShell自动封禁恶意IP(附完整脚本)
Windows远程桌面安全加固:基于PowerShell的智能IP封禁系统 远程桌面服务(RDP)作为企业IT基础设施的核心组件,其安全性直接关系到整个系统的稳定运行。根据2023年全球网络安全报告显示,针对3389端口的暴力破解尝试占所有…...
