整形在内存中的存储——C语言

1.原码、反码、补码

首先介绍一下计算机中怎么储存的

原码

原码就是第一位为符号位,后面放的是数字绝对值的二进制。

1的原码为  00000000 00000000 00000000 00000001

-1的原码为 10000000 00000000 00000000 00000001

反码

正数的反码是它本身,负数的反码是在原码的基础上符号位不变,其他位按位取反。

1的反码为  00000000 00000000 00000000 00000001

-1的反码为 111111111 111111111 111111111 111111110

补码

正数的补码是它本身,负数的补码是在反码的基础上+1

1的补码为  00000000 00000000 00000000 00000001

-1的补码为 111111111 111111111 111111111 111111111

在计算机中,存储和运算用的都是补码,原因是cpu只有加法器,想要执行减法操作时,只需要加上这个数的相反数即可。

1-1可以看成1+(-1)

1的补码为  00000000 00000000 00000000 00000001

-1的补码为 111111111 111111111 111111111 111111111

相加后为  1 00000000 00000000 00000000 00000000

前面的1舍去,最后的结果为0。

2.大端模式和小端模式

        在计算机系统中,我们是以字节为单位访问内存空间的,每一个地址对应着一个字节。所以除了char类型的数据,其他类型的数据在内存中都有着存储顺序的问题。

大端模式和小端模式的区别

        在大端模式下,高位字节放在内存的低地址处,低位字节放在内存的高地址处。在小端模式下,高位字节放在内存的高地址处,低位字节放在内存的低地址处。

        下面是0x12345678以int类型在内存方式(假设地址从0x00000000开始)

0x000000010x000000020x000000030x00000004
大端模式12345678
小端模式78563412
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值