原码反码补码

目录

一、byte与bit

二、原码、反码、补码

原码

计算方法:

2. 反码

计算方法:

3. 补码

计算方法:

三、正数的原码反码补码

四、负数的原码反码补码

特殊:

五、计算机底层为什么采用补码


一、bytebit

  • byte(字节)是计算机存储和处理数据的基本单位,通常用8个比特(bit)组成
  • 1 byte =8 bit
  • 1 KB = 1024b byte                                程序员中1K=1024
  • 1MB = 1024 KB
  • 1 GB = 1024 MB
  • 1 TB = 1024 GB

HEX:Hexadecimal十六进制

DEC:decimal 十进制

OCT:octal 八进制

BIN:binary 二进制

二、原码、反码、补码

  • 原码反码补码是计算机二进制的三种表现形式,原码最接近人类的算法
  • 原码反码补码的设计是为了在计算机中高效地表示有符号整数,并且简化运算
  • 计算机在底层都是采用二进制补码形式表示的
  • 二进制位最高位称为符号位,0为正数,1为负数
  • 原码的存储方式并不固定,他可以根据需要占用不同的字节数。常见的原码表示方法是用固定长度的字节来表示整数,例如,通常会用1个字节表示一个有符号整数的原码

原码

定义
原码是整数的符号位绝对值的直接二进制表示。

  • 符号位
    • 0 表示正数
    • 1 表示负数
  • 数值部分
    使用数的绝对值对应的二进制表示。
计算方法
  1. 取整数的绝对值,将其转换为二进制。
  2. 在最高位添加符号位(0 表示正数,1 表示负数)

2. 反码

定义
反码是基于原码的一种变形:

  • 正数的反码与原码相同。
  • 负数的反码是:
    1. 符号位保持不变(1 表示负数)。
    2. 数值部分按位取反(即 0110)。
计算方法
  1. 如果是正数,反码 = 原码。
  2. 如果是负数:
    • 保留符号位为 1。
    • 数值部分逐位取反。

3. 补码

定义
补码是计算机中表示负数的常用方法:

  • 正数的补码与原码相同。
  • 负数的补码是:
    1. 在其反码的基础上 +1(最低位加 1,有进位则继续进位)。
计算方法
  1. 如果是正数,补码 = 原码。
  2. 如果是负数:
    • 先计算反码。
    • 反码 +1。

三、正数的原码反码补码

  • 正数的原码反码补码是相同的
  • 127的原码反码补码分别是多少:0111 1111

四、负数的原码反码补码

  • 负数的原码:将绝对值转换为二进制后,最高位改为1

如:-5的原码:10000101

  • 负数的反码:以原码作为参考,符号位不变,其他位取反

如:-5的反码:11111010

  • 负数的补码:以反码作为参考,符号位不变,加1

如:-5的补码:11111011

  • 负数的 原码转补码 ==补码转原码,都是符号位不变,其他位取反再加1

特殊:

-128原码:10000000,很特殊的一个,从二进制数到原码没有进行改动

-128反码:11111111

-128补码:10000000

-128的原码和补码都相同

取值范围

  • 对于有符号的1个字节,通常使用补码表示,1byte的取值范围:[-128,127],共有256个不同的整数

     用补码表示就是[10000000,01111111]

五、计算机底层为什么采用补码

  1. 可以简化电路设计:采用补码可以将加减法转化为相同的操作,从而简化电路设计
  2. 解决了0的正负问题:在原码中,0有两个表示,+0和-0,这样会导致计算结果不唯一,而在补码中,0只有一种表示,即全0,可以避免这个问题
  3. 解决了负数溢出问题:在原码中,负数的表示范围比正数少1,这样在进行减法运算时容易出现负数溢出的情况,而在补码中,负数的表示范围与正数相同,可以避免负数溢出的问题
  4. 方便计算机进行运算,补码形式可以方便计算机进行加减法运算,而且可以使用相同的电路进行运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剑客狼心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值