计算机的内嵌类型进行自动的符号扩展,比如char与int类型等等,但是也许你遇到一个有符号的二进制补码数x,并且使用仅仅b
位,更进一步,也许你需要将x转化为整型,如果x为正数,一个简单的复制操作就可以搞定,但是如果为负数,符号位必须扩展。
例如:假如我们仅仅用4位来存储一个数,于是-3用二进制就表示为1101,如果我们用8位,那么-3就表示为11111101.
最值得注意的位是4位的相关数使用更多位数在左边进行填充,这被称为“符号扩展”,在C语言中,符号扩展对于固定长度的数很普
通,因为位域可能是结构体或是联合体,例如:将5位数转换为全整型:
int x; //待转换的数int r; //结果struct {signed int x:5;} s;r = s.x = x;