【C语言入门必备】二进制(整形数据在内存中的存储)


大家在学到操作符这里的时候会遇到一个让初学者感到非常头疼的东西,那就是二级制和十进制的转换,还有整形数据在内存中的存储。那么这篇博客讲的就是这。

*进制,意思就是逢*进1

就比方说,我们日常生活中的数字都是用十进制表示的,就是0 ~ 9这十个数字来表示,例如2341,2839,20093。这些数字都是十进制的数字,但是在计算机语言中,十进制并不是那么的吃香,我们所能看到的大多都是二进制,八进制和十六进制。

常见的进制

二进制,就是0和1组成的数,这里就是逢2进1。
八进制,就是0~7组成的数,这里就是逢8进1。
十进制,就是0~9组成的数,这里就是逢10进1。
十六进制,就是0~15(在计算机中为了方便表示就把10~15换为a~f)组成的数,这里就是逢16进1。

不同进制下的权重

来一个十进制中的例子,我们看下图(以3568这个数来说):
在这里插入图片描述
那么对应的,来一个二进制中的例子,如下(100101):
在这里插入图片描述
那么把这个东西搞懂就融会贯通了,八进制和十六进制也是如此。

整数类型在内存中的存储

整数有三种表示形式,原码、反码、补码。这三个码学好了就够了。

先说原码,就是一个整数用以二进制的形式表示的数。

例如10这个十进制数,用二进制表示的话就是1010。

但是这里要注意一点,如果说整数类型为int的话(后面都以int为标准)。int是四个字节的大小。当10在内存中存储的时候就占了32个比特位,上面我们看上去是1010,但是在内存中是00000000 00000000 00000000 00001010

整数在数学上可分为正整数,负整数和0,0的二进制就不用说了

就说正整数和负整数。

对于正整数而言原码反码补码是相同的,原码得到了就不需要再进行计算了。

对于负整数而言原码还是那个表面上的二进制,而反码是符号位不变,其他位按位取反,补码是反码+1。

这一点比较坑,必须要牢记,不然做题的时候会很头疼。

再说反码和补码

以-10为例
原码是10000000 00000000 00000000 00001010
反码是11111111 11111111 11111111 11110101(相对与原码符号位不变其他位取反)
补码是11111111 11111111 11111111 11110110(反码+1,内存中存的是这个)

以上的内容在遇到二进制的题的时候是必须掌握的。

对于浮点数的存储以后会讲,整数和浮点数的存储是不一样的。

到这里就完了,这些搞懂就掌握了一项很重要的技能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

先搞面包再谈爱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值