原码:
人类数字二进制表示。
反码:
原码到补码的过度,没有任何作用。
补码:
计算机内部数字表示。
计算机用补码表示的原因:
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。