C语言基础:整数数据在底层的存储

数据类别

整数分为三种:

  1. 正整数
  2. 负整数

  3. 此三种中,在计算机的存储中,可以将0和正整数归为一类

底层存储

计算机在底层存储这些整数的时候,存储的是数据的二进制数的补码,由0和1组成,对于第一类(正整数和0)来讲,只要符合二进制规则即可存储,那么对于负数来讲,无法直接以01代码的形式写入,这时候就出现了一种特定的存储方法,仍然以01代码为基础,只是改变了计数的规则

第一类:二进制编码 == 反码 == 补码
第一类较为简单,在此不做过多解释,对于不知道二进制编码和反码、补码的请自觉翻阅以前的笔记

第二类:虽然存储的都是补码,但负数的补码为他的反码加1,而他的反码为他的相反数的二进制编码和0位异或之后的编码

实例:

i = 1;二进制编码为:00000000 00000000 00000000 00000001
j = -1;相反数的二进制编码为:00000000 00000000 00000000 00000001

此时,i在计算机当中存储的值就是这个二进制的补码也就是他本身
对于j来讲,存储的是他相反数二进制编码和0唯异或之后的编码,并且加1,即存储的值为
11111111 11111111 11111111 11111111
其最高位为符号位:为1则为负数,为0则为正数

原因

为什么,在计算机中存储的补码,而不搞的简单一点?何必呢?
这是因为计算机的CPU当中只有加法器,而没有减法器和其他算法器。
因为一切其他运算都可以用加法来表示,存储补码能够大大加大计算机的运算能力,实属伟大发明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

友人和他的朋友们

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

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

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

打赏作者

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

抵扣说明:

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

余额充值