[深入理解计算机系统]第二章-信息的表示与处理
2013-08-27 10:34
453 查看
1.对于无符号与有符号之间的强制类型转化,低层的位表示不变。
2.C语言在执行运算的时候,如果他的一个运算数是有符号的而另一个是无符号的,那么C语言会隐式的将有符号参数强制转化为无符号参数,然后再执行运算。
例如2147483647 > -2147483647-1
但是,2147483647U < -2147483647-1 (注意,2^31=2147483648)
因为,第二个运算涉及有符号与无符号的运算,C语言会隐式的将有符号参数强制转化为无符号参数,故-2147483647-1=-2147483648,位表示为10000.....0000,在无符号数里面,即为2147483648,所以才会有2147483647U < -2147483647-1 这样的错误产生。
3.将一个较小的数据类型转化为一个较大的数据类型。
对于无符号数,只需开头补零。
对于有符号数,只需开头补最高位。
例如,原始值为11001000,转化到最高位就是1111111111001000,即在前面补最高位(这里原始值的最高位为1)。
解释:补出的位数与原始值的最高位合计起来,其值刚好不影响结果。
再比如,
short sx = -12345;
unsigned int sy = sx;
那么sy的结果是多少呢?
分析:short型的是2位,unsigned int 是4位。
12345 = ox3039 = 0011000000111001,取反加一得-12345的存储值:1100111111000111 = oxcfc7
按最高位补开头,
sy = 1111111111111111 1100111111000111 = 4294954951
2.C语言在执行运算的时候,如果他的一个运算数是有符号的而另一个是无符号的,那么C语言会隐式的将有符号参数强制转化为无符号参数,然后再执行运算。
例如2147483647 > -2147483647-1
但是,2147483647U < -2147483647-1 (注意,2^31=2147483648)
因为,第二个运算涉及有符号与无符号的运算,C语言会隐式的将有符号参数强制转化为无符号参数,故-2147483647-1=-2147483648,位表示为10000.....0000,在无符号数里面,即为2147483648,所以才会有2147483647U < -2147483647-1 这样的错误产生。
3.将一个较小的数据类型转化为一个较大的数据类型。
对于无符号数,只需开头补零。
对于有符号数,只需开头补最高位。
例如,原始值为11001000,转化到最高位就是1111111111001000,即在前面补最高位(这里原始值的最高位为1)。
解释:补出的位数与原始值的最高位合计起来,其值刚好不影响结果。
再比如,
short sx = -12345;
unsigned int sy = sx;
那么sy的结果是多少呢?
分析:short型的是2位,unsigned int 是4位。
12345 = ox3039 = 0011000000111001,取反加一得-12345的存储值:1100111111000111 = oxcfc7
按最高位补开头,
sy = 1111111111111111 1100111111000111 = 4294954951
相关文章推荐
- 深入理解计算机系统读书笔记之第二章信息的表示和处理
- 深入理解计算机系统--第二章(信息的表示和处理)
- 深入理解计算机系统:信息的处理与表示(一)基础
- 深入理解计算机系统--信息的表示和处理
- 深入理解计算机系统--信息表示和处理
- 深入理解计算机系统----->信息的表示和处理笔记
- 深入理解计算机系统(第二版)----之二:(一:程序的结构和执行)信息的表示和处理
- 深入理解计算机系统 第二章 表示和操作信息
- 深入理解计算机系统——第02章——信息的表示和处理
- 深入理解计算机系统:信息的处理和表示(二)整数四则运算
- 深入理解计算机系统 第2章 信息的表示和处理
- 深入理解计算机系统学习之信息的表示和处理
- 深入理解计算机系统之旅(二)信息在计算机中的表示和处理
- 深入理解计算机系统--信息的表示和处理
- 深入理解计算机系统(2.1)------信息的存储和表示
- 【深入理解计算机系统】_2_计算机系统中的信息表示
- 2、深入理解计算机系统笔记:信息表示
- Learning by doing 二 深入理解计算机系统(CS:APP)一信息表示
- 【深入理解计算机系统】_2_计算机系统中的信息表示
- 深入理解计算机系统(2.1)------信息的存储和表示