[求助][讨论]关于类型转换......
有以下两个问题不理解:1.将字符型数据赋给整型变量时,如果系统将字符处理为signed char,若字符最高位为0,则整型变量高8位补0;若字符型最高位为1,则高8位补1,这样是为了使数值保持不变.
2.将带符号的int型数据赋给long型变量,要进行符号扩展,将int型的16位送到long的低16位中,如果int为正值,则long型高16位补0;若int为负值,则long型高16位补1,以保持数值不改变.
为什么这样扩展后数值不变?明明就变了啊.
谢谢. 如果你知道机器友,你就知道这二题的答案了! 这是因为在机器是用”补码“表示数值的。
signed char说明最高位要表示符号。如果为unsigned char则最高位非符号位。
int 的最高位为符号位。 这我知道啊,问题是,怎么算?例如,\'\\376\'赋int的结果是什么?那个-2是怎么算出来的?
[ Last edited by gyCai on 2004-3-12 at 08:14 PM ] \'\\376\'
char:11111110:-2。
unsigned char:254
赋值给int时,从char转变为int。所以是-2. 呵呵,看来钥匙对于计算机的知识很强,偶也自认不如。 char:11111110,除掉最高位转换为十进制得到254,而char的范围是-128~127,是否代表这个数在char中从-128数起第254个数?即是最终结果为254-129-127=-2?
页:
[1]