参考这个:
#include <stdio.h>
int main()
{
int height,n,i,j,k;
char ch;
printf("请输入高度:");
scanf("%d",&height);
printf("请输入要打印的字符:");
getchar();
scanf("%c", &ch);
n=height;
for(i=1;i<=height;i++) // 控制上面等腰三角形的高度
{
for(j=n-1;j>0;j--)
{
printf(" "); // 输出每一行最前面的空格
}
n--;
for(k=1;k<=i;k++) // 打印每一行的字符ch和空格后的东西
{
printf("%c ", ch);
}
printf("\n"); // 打印下一行
}
// for(i=1;i<height;i++) // 控制下面等腰三角形的高度
// {
// for(j=1; j<=i;j++) // 输出每一行最前面的空格
// {
// printf(" ");
// }
// for(k=i;k<height;k++) // 打印每一行的字符ch和空格后的东西
// {
// printf("%c ", ch);
// }
// printf("\n"); // 打印下一行
// }
return 0;
}
我们知道:原码的表示方法:最高位作为符号位,不表示数据,0为正,1为负。
比如 [+1] = [0000 0001] (原码) [-1] = [1000 0001] (原码)
反码:正数和原码相同,负数:符号位不变,其余数位取反
[+1] = [0000 0001] (反码) [-1] = [1111 1110] (反码)
补码:正数和原码相同,负数:符号位不变,其余数位取反+1
[+1] = [0000 0001] (补码) [-1] = [1111 1111] (补码)
所以到这里,基本出来了,-1对于带符号型(以8位为例)来说用补码表示自然就是 1111 1111
对于不带符号整数来说,最高位不表示符号位,故表示255 这也是unsigned回绕机制的原理。说到底,还是计算机底层表示