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

server/2025/2/7 8:18:48/

目录

概述【适合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)=-16return 0;
}

运行结果展示:


http://www.ppmy.cn/server/165629.html

相关文章

如何使用 DeepSeek API 结合 VSCode 提升开发效率

引言 在当今的软件开发领域&#xff0c;API 的使用已经成为不可或缺的一部分。DeepSeek 是一个强大的 API 平台&#xff0c;提供了丰富的功能和数据&#xff0c;可以帮助开发者快速构建和优化应用程序。而 Visual Studio Code&#xff08;VSCode&#xff09;作为一款轻量级但功…

C++【深入 STL--list 之 迭代器与反向迭代器】

接前面的手撕list(上)文章&#xff0c;由于本人对于list的了解再一次加深。本文再次对list进行深入的分析与实现。旨在再一次梳理思路&#xff0c;修炼代码内功。 1、list 基础架构 list底层为双向带头循环链表&#xff0c;问题是如何来搭建这个list类。可以进行下面的考虑&am…

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-tasks.py

tasks.py ultralytics\nn\tasks.py 目录 tasks.py 1.所需的库和模块 2.class BaseModel(nn.Module): 3.class DetectionModel(BaseModel): 4.class OBBModel(DetectionModel): 5.class SegmentationModel(DetectionModel): 6.class PoseModel(DetectionModel): …

基于多重算法的医院增强型50G全光网络设计与实践:构建智慧医疗新基石(下)

四、关键算法在医院 50G 全光网络中的应用场景 4.1 智能流量调度算法 4.1.1 基于 DQN 的流量分类 深度 Q 网络&#xff08;DQN&#xff09;是一种将深度学习与 Q 学习相结合的算法&#xff0c;它在医院 50G 全光网络的流量分类中发挥着重要作用。其核心原理是通过构建深度神…

【LeetCode 刷题】贪心算法(2)-进阶

此博客为《代码随想录》二叉树章节的学习笔记&#xff0c;主要内容为贪心算法进阶的相关题目解析。 文章目录 135. 分发糖果406. 根据身高重建队列134. 加油站968. 监控二叉树 135. 分发糖果 题目链接 class Solution:def candy(self, ratings: List[int]) -> int:n len…

景联文科技:专业数据采集标注公司 ,助力企业提升算法精度!

随着人工智能技术加速落地&#xff0c;高质量数据已成为驱动AI模型训练与优化的核心资源。据统计&#xff0c;全球AI数据服务市场规模预计2025年突破200亿美元&#xff0c;其中智能家居、智慧交通、医疗健康等数据需求占比超60%。作为国内领先的AI数据服务商&#xff0c;景联文…

吴恩达深度学习——卷积神经网络实例分析

内容来自https://www.bilibili.com/video/BV1FT4y1E74V&#xff0c;仅为本人学习所用。 文章目录 LeNet-5AlexNetVGG-16ResNets残差块 1*1卷积 LeNet-5 输入层&#xff1a;输入为一张尺寸是 32 32 1 32321 32321的图像&#xff0c;其中 32 32 3232 3232是图像的长和宽&…

面向智慧农业的物联网监测系统设计(论文+源码+实物)

1系统方案设计 根据系统功能的设计要求&#xff0c;展开面向智慧农业的物联网监测系统设计。如图2.1所示为系统总体设计框图。系统采用STM32单片机作为系统主控核心&#xff0c;利用YL-69土壤湿度传感器、光敏传感器实现农作物种植环境中土壤湿度、光照数据的采集&#xff0c;系…