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

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

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

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


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

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

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

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

为什么呢?

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

相关推荐
科技道人1 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
逝水无殇4 小时前
C# 异常处理详解
开发语言·后端·c#
玖玥拾5 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
铅笔侠_小龙虾5 小时前
Rust 学习目录
开发语言·学习·rust
云泽8086 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范
灯澜忆梦6 小时前
GO---可见性规则
开发语言·golang
逝水无殇6 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#
这是个栗子7 小时前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ7 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香8 小时前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript