C语言中的位操作(5)固定位宽的符号扩展

     计算机的内嵌类型进行自动的符号扩展,比如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;
原文地址:https://www.cnblogs.com/xueda120/p/3068213.html