当前位置: 首页 > article >正文

C语言按位取反【~】详解,含原码反码补码的0基础讲解【原码反码补码严格意义上来说属于计算机组成原理的范畴,不过这也是学好编程初级阶段的必修课】

目录

概述【适合0基础看的简要描述】:

上述加粗下划线的内容提取版:

从上述概述中提取的核心知识点,需背诵:

整数【包含整数,负整数和0】的原码反码补码相互转换的过程图示:

过程详细刨析:

运行结果展示:


概述【适合0基础看的简要描述】:

整型的表示方法:原码,反码,补码
正整数的符号位为0,负整数的符号位为1
正整数的原码=反码=补码;
负整数的原码先写出来,符号位不变,其他位按位取反就可以得到反码,反码+1即可得到补码。
进行运算或者赋值时,输入的都是十进制数,转换成二进制即为该数的原码,再转换成补码就可以进行赋值或运算了,赋值或运算结束后,将补码转换成原码,最后将补码转换成十进制就是最终的结果了。

上述加粗下划线的内容提取版:

十进制 -> 二进制源码 -> 二进制补码 -> 按位取反 -> 二进制原码 -> 十进制


从上述概述中提取的核心知识点,需背诵:

按位取反:对一个数的二进制补码进行取反。(0转1,1转0)。

原码:在数值前面增加一位符号位,0表示正数,1表示负数。

反码:正数的反码与原码相同;负数的反码对其原码逐位取反(符号位除外)。

补码:正数的补码与其原码相同;负数的补码是在其反码的末位+1。


整数【包含整数,负整数和0】的原码反码补码相互转换的过程图示:


过程详细刨析:

//按位取反【~】【cout函数默认整型是int,(由于int整型是占4个字节的,相当于32个bit位(不算符号位),所以二进制一共有32位数值位+最左边的一位符号位【符号位若为0代表数的十进制是个非负数,符号位若为1代表数的十进制是个正数】)】
#include<iostream>
using namespace std;
int main() {
	cout << (~0) << endl;
	//0存储在内存中:
	// 0b 0 00000000 00000000 00000000 00000000  【0的原码=反码=补码】【从左往右数第一位是符号位】
	// 0b 0 00000000 00000000 00000000 00000000    【0的补码】
	// ~0【0按位取反的过程:】 
	// 0b 1 11111111 11111111 11111111 11111111  0的补码按位取反后的结果【从左往右数第一位是符号位,进行按位取反时,符号位也要取反】
	// 0b 1 11111111 11111111 11111111 11111110  补码-1=反码
	// 0b 1 00000000 00000000 00000000 00000001  反码取反=原码
	// 所以0的按位取反结果是-1
	
	//求一个数的相反数【(按位取反x)+1=(-x)】
	int a = 16;
	cout << (~a) + 1 << endl;
	// ~16【按位取反16的过程:(简略写:省略了一部分数值位,详细的看上面0的按位取反)】
	// 0b 0 10000  16的原码=反码=补码
	// 0b 1 01111  16的补码按位取反=~16的补码
	// 0b 1 01110  ~16的反码
	// 0b 1 10001  ~16的原码
	// ~16=-17
	// (~16+1)=-16
	return 0;
}

运行结果展示:


http://www.kler.cn/a/531918.html

相关文章:

  • 基于SpringBoot的新闻资讯系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • 【AudioClassificationModelZoo-Pytorch】基于Pytorch的声音事件检测分类系统
  • 优选算法的灵动之章:双指针专题(一)
  • 41. 缺失的第一个正数
  • 21款炫酷烟花代码
  • 使用 DeepSeek-R1 等推理模型将 RAG 转换为 RAT,以实现更智能的 AI
  • 安装nvm后报错
  • 计算机网络中常见高危端口有哪些?如何封禁高危端口?
  • nvm的安装和使用
  • VSCode源码分析参考资料
  • Java自定义IO密集型和CPU密集型线程池
  • OpenGL学习笔记(七):Camera 摄像机(视图变换、LookAt矩阵、Camera类的实现)
  • 【6. 深入理解 C++ 中的常量】
  • G1. Yunli‘s Subarray Queries (easy version)
  • Java 大视界 -- Java 大数据在智能电网中的应用与发展趋势(71)
  • 2月3日星期一今日早报简报微语报早读
  • 遭受大量境外网络攻击,郭盛华公开发声支持DeepSeek
  • 基于Spring Security 6的OAuth2 系列之十 - 授权服务器--刷新token
  • 优化代码性能:利用CPU缓存原理
  • 人工智能学习(五)之机器学习逻辑回归算法
  • DeepSeek-R1 本地部署教程(超简版)
  • SwiftUI 在 Xcode 预览修改视图 FetchedResults 对象的属性时为什么会崩溃?
  • DRM系列七:Drm之CREATE_DUMB
  • C++(进阶) 第8章unordered_map和unordered_set的使⽤(哈希)
  • 基于STM32景区环境监测系统的设计与实现(论文+源码)
  • 分布式数据库架构与实践:原理、设计与优化