为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第七天数据在内存中的储存

课程内容:

数据在内存的储存

有符号和无符号

平时写的int a 就是 signed int a 不过这个signed省略了

8it数据储存

有符号

char ,有符号类型,占1bytes。 可以表示负数,0,正数。范围[-128~127] -128 ~ -1 0~127

无符号

unsigned char ,无符号类型,占1bytes。可以表示0,正数。范围[0~255]

8bit=1bytes

超出范围数据的计算方法

概论

如上,有符号和无符号数据范围是不一样的,如果数据超出上面范围了,该怎么计算

设计规则

无符号类型的数原码,反码,补码是它本身. [正数和0]

有符号类型的数的最高位表示符号位,0表示为正数,1表示为负数

负数的反码 = 符号位不变,其他位按位取反

负数的补码 = 反码 + 1

计算方法

方法

先计算整数的补码(=右边的数)

把补码赋值给变量,然后观察变量的数据类型

unsigned char

若是为unsinged char类型,一定为正数或0,原,反,补一样.%d输出的原码就是补码,

直接转换为原数输出即可。

char

若是为char类型,观察变量内存存储数据的最高位,1 表示为负数,%d输出需要转换为原码输出

个人理解

char a其中char是变量类型a是变量,先判断变量是正数还是负数

正数的补码

负数的补码

观察变量的类型

unsigned char

补码转换原数输出就可以

char

最高位1

负数转换原码输出

最高位0

正数转换原数输出就可以

观察变量的类型

unsigned char

补码转换原数输出就可以

char

最高位1

负数转换原码输出

最高位0

正数转换原数输出就可以

学习收获:

和之前学的补码那些知识点完美的串了起来

也理解了 如果数据超出内存的呈现方式

之前看到输出的结果,现在也理解了逻辑

截图打卡:

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消