【C】整数在内存中的存储

在C语言中,整数是按照二进制存储的。

一个整型是4个字节,一个字节是8个比特位,4*8=32。

比如-3这个数字,在内存中就是10000000000000000000000000000011

关于原码、反码、补码

系统在内存中存放数据的时候,会先把二进制源码转化为反码,在把反码转换为补码,最后存放到内存中。

原码

什么是原码?像我们前面的-3,直接转化成二进制就是原码了。

反码

怎么得出反码呢?其实就是由原码的符号位不变,其他位按位取反得到的,那么-3的反码就是

11111111111111111111111111111100

符号位就是二进制从左开始的第一位,如果是正数就是0,如果是负数就是1,比如3的源码是

00000000000000000000000000000011

补码

补码就是在反码的基础上给二进制位加上个1,那么就得到了

11111111111111111111111111111101

我们还要知道一件事情,那就是正数的原码、补码、反码是一样的,这就是为什么我们前面要用-3来举栗子

当要用到-3的时候,系统就会将-3的补码转换成反码(减1),再将反码转换成原码(符号位不变,其他位按位取反),就得到了原来的数字。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值