数据的存储形式 --- 补码

本文介绍了计算机中数据存储的基本形式——补码。详细解释了正数和负数如何转换为补码进行存储,并通过实例演示了具体操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、数据的存储形式

         数据都是以补码形式存储

         正数的补码是正数的本身

         负数的补码 符号位不变 其它位数取反+1;

          【例1+9的补码是00001001

            【例2】求-5的补码。

-5对应正数500000101所有位取反(111110101(11111011)

所以-5的补码是11111011

为了理解`short`类型数据 `-32513` 的补码表示,我们首先需要明确几个概念。 ### 1. Short 类型 在大多数编程语言中,`short` 数据类型通常占用两个字节 (16 bits)。这意味着它可以在内存中存储-32768 到 +32767 范围内的值(对于有符号整数而言)。因此,-32513 是在这个范围内合法的数值。 ### 2. 补码的概念 **补码**是一种对负数编码的方式,在计算机内部用于简化加减运算的设计。对于二进制系统来说: - 正数的原码、反码和补码都是一样的; - 对于负数,则采用其绝对值按位取反再加一得到的就是它的补码形式; ### 3. 将十进制转换为二进制并求出补码 #### 第一步:将正数部分转成二进制 先将 |-32513| 即 32513 化作无符号十六进制表示 `0x7F09` ,然后将其展开为完整的16位二进制串: ``` +32513 = 0b0000_0111_1111_0000_1001 = 0b00000111111100001001 //去掉下划线方便查看 ``` #### 第二步:计算补码(适用于负数) 因为我们要找的是-32513的补码所以我们现在处理上面的结果: - 先把上述结果的所有位元逐一反转(即由0变1,由1变0) ```text ~(+32513) = 0b11111000000011101010 = 0b11111000000011101010 ``` - 再给这个新生成的数字加上1 ```text (-32513)_complement = (~32513)+1 = 0b11111000000011101010 + 1 = 0b11111000000011101011 ``` 最终可以得出结论,-32513 在 short 类型下的补码就是 **`0b11111000000011101011`**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值