C 语言 - 整型 原码,反码,补码

本文介绍了计算机中整型数的存储方式,特别是有符号整数的原码、反码和补码概念。无符号整数直接以二进制形式存储,而有符号整数的负数则采用补码表示,补码确保了0的唯一性和减法运算通过加法实现。文章通过实例解释了如何计算负数的补码,并指出在32位系统中,最高位为1表示负数,其余位表示数值的相对部分。补码的使用简化了计算并避免了冗余的编码。
摘要由CSDN通过智能技术生成

计算机可以识别0和1, 1个字节等于8位(1Byte=8bit)。

无符号整型1表示为00000001,2表示为00000010,3表示为00000011, ..., 最大11111111。 无符号的数就是按这个原理来储存的,所以告诉你一个无符号的整数的二进制码,你就可以知道这个数是多少,而且知道在计算机中,这个数本身就是以这个二进制码来储存的。无符号的整数根本就没有原码、反码和补码


只有有符号的整数才有原码、反码和补码的!其他的类型一概没有。

不能用最高位表示符号位,如果是0表示正数,如果是1表示负数,剩下的7位用来储存数的绝对值的方法。

因为2^7*2还是256个数, 但是 0000 0000 和 1000 0000 是一个数 这样就能表示 255个数。

负整数在计算机中是以补码形式储存的,但是由于正整数的补码和反码一样,所以可以统称有符号整数按补码存储

32bit系统中 0x8000 0000 ~ 0xFFFF FFFF 正好对应着 -2^31 ~ -1, 同时可以发现所有这些负数的最高位都是1。

所以在有符号整型数对应的储存码的最高位 可以指示出来 数的正负,但是剩余31 对应的二进制值并不是这个负数的绝对值。

其实一个负数补码对应的值是 -2^31 + (除了最高位,剩下位的值)

比如 0x8000 0000 对应的数 是 -2^31 + 0 = -2^31; 而0xFFFF FFFF 对应的数是 -2^31 + (-2^31 - 1) = -1


<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值