【C语言】原码反码补码详解

在C语言中,整数 的2进制表示方法有三种 ,即原码、反码和补码

有符号整数的三种表示方式均有符号位数值位 两个部分,在 二进制序列中,最高位的1位被当做符号位,剩下的都是数值为

在符号位中,1表示负,0表示正


正整数的原、反、补码都相同。
负整数的三种表示方法各不相同。

原码 :直接将数值按照正负数的形式翻译成二进制得到的就是原码
反码 :将原码的符号位不变,其他位依次按位取法就可以得到反码
补码 :反码+1就得到补码
补码得到原码也是可以使用:取反,+1的操作

无符号的三种表示方式都一样,因为没有符号位,每一位都是数值位

对于整数来说,存放在内存中的数据其实就是补码

为什么呢?

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

相关推荐
C羊驼2 分钟前
C语言学习笔记(十一):数据在内存中的存储
c语言·经验分享·笔记·学习
雾隐潇湘13 分钟前
C++——第三篇 继承与多态
开发语言·c++
Marye_爱吃樱桃14 分钟前
MATLAB R2024b的安装、简单设置——保姆级教程
开发语言·matlab
旺仔.29114 分钟前
Linux系统基础详解(二)
linux·开发语言·网络
阿贵---15 分钟前
分布式系统C++实现
开发语言·c++·算法
不染尘.16 分钟前
最短路径之Bellman-Ford算法
开发语言·数据结构·c++·算法·图论
格林威16 分钟前
工业相机图像采集:Grab Timeout 设置建议——拒绝“假死”与“丢帧”的黄金法则
开发语言·人工智能·数码相机·计算机视觉·c#·机器视觉·工业相机
xiaoye-duck18 分钟前
C++ STL set 系列深度解析:从底层原理、核心接口到实战场景
开发语言·c++·stl
小涛不学习19 分钟前
Java高频面试题(带答案版)
java·开发语言
m0_6625779721 分钟前
C++中的RAII技术深入
开发语言·c++·算法