原码、反码、补码的进一步理解

原码:

人类数字二进制表示。

 

反码:

原码到补码的过度,没有任何作用。

 


补码:

计算机内部数字表示。

计算机用补码表示的原因:

        1、可以将符号位与其他位统一处理;

        2、减法可以按加法处理。

注:

        1、补码相加,如果最高位(符号位)有进位,则进位被舍弃;

        2、补码、原码转换过程相同(除符号位外,取反加一)

 

补码实例:

0                  00000000

1                  00000001

127             01111111

-127            10000001

-1                 11111111

 

例题:

 

运行结果:

255

 

解释:

因为i是整形的,所以-1-i是整形的(即使i不是整形的,-1-i好像也转化成整形的),即int,占4个字节。

a数组中元素是char型的,占1个字节。计算机中是用补码表示的,当循环执行255次的时候,-1-i的值为-255,执行到256次的时候,-1-i的值为-256,对于int型的-256的值为11111111 11111111 11111111 00000000,其中,最后8位为0,赋值给a[i]的时候,因为a是char型,赋值时只取最后8位,因此,a[255] = 00000000,就是0,而ASCII码为0对应的字符为'/n',表示字符串结束。所以strlen(a) = 255。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值