计算机中数字储存原理理解

话不多说直接上干货:看完这个你百分百不困惑。

我们在这里看见这种赋值首先要想到变量的取值范围,有符号的字符型数值的取值范围是-128~127,无符号的字符型取值范围是0~256,这里a,b为有符号的字符型变量,c,d为无符号的字符型变量。

先看a变量,a是一个正数,在内存中的存储形式是1000 0001(正数的原码反码补码都一样),然后看a的类型,为字符型,一个字节刚好占8个二进制位,然后他又是一个有符号的,看最高位,最高位为1,代表的是一个负值,此时内存中的1000 0001代表的是补码,我们现在需要对其用有符号的十进制形式输出,所以就要转成原码,1000 0001先减一变成反码  1000 0000,然后除开符号位全部取反,  得到原码       1111 1111,此时转成有符号的数就是-127,输出a=-127。

再看b变量,b是一个负数,其原码为1 1000 0001,转成反码1 0111 1110;然后加一转成补码      1 0111 1111,又因为他是一个字符型,占8个二进制位,舍弃最前面的1,变成0111 1111,然后又因为是有符号的(0111 1111)代表一个正数(原码,反码,补码都一样),转成有符号的十进制数输出得127。

再看c,c是一个正数,在内存中存储的二进制形式为1 0000 0001,其原码反码补码都一样,然后看c的类型,为字符型,占八个二进制位,此时变成0000 0001,又因为是无符号型的,最高位为0,代表正数,补充一点这里的0000 0001此时还是补码形势存在的,将其变成原码为0000 0001(他为正数,原码反码补码一样),再用有符号的十进制形式输出为1。

最后看d,d是一个负数,在内存中以补码的形式存在,他的原码为11 0000 0001,反码为            10 1111 1110,然后看他为字符型,占8个二进制位,舍弃前面的10,变成1111 1110然后他又是无符号的,最高位为1,代表正数,其原码反码补码都一样,然后以有符号的十进制形式输出,得255。

总结:先把数转成二进制,然后看类型(char,int等),确定所占字节数,最后看有无符号,从而输出。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值