
1、符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1;对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0。
比如一个用一个8位二进制表示-1,则是10000001
如果把这个书用16位二进制表示时,则为11111111 10000001 高位全都是1,这个叫做符号扩展,主要用于对其 *** 作数。
2、零扩展就是全补零。不论其符号位是多少,高8位全都补0.
#include<stdio.h>void expand( char *s1, char *s2 ) {
while( *s2 = *s1 ) {
char prev = *( s1 - 1 ),
curr = *s1,
next = *( s1 + 1 )
if( curr == '-' &&prev <next ) {
char c = prev + 1
while( c <next )
*s2++ = c++
--s2
}
++s1
++s2
}
}
int main( ) {
char in[99],
out[99]
gets( in )
expand( in, out )
printf( "%s\n", out )
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)