int
func1(unsigned word)
{
return (int)((word << 24) >> 24);
}
int
func2(unsigned word)
{
return ((int)word << 24) >> 24;
}
| w | func1(w) | func2(w) |
| 127 | 127 | 127 |
| 128 | 128 | 128 |
| 255 | 255 | -1 |
| 256 | 0 | 0 |
func2也是取数的低8位的值,但是是有符号的符号右移,取值范围是-128~127。
本文探讨了如何扩展一个数字的位表示,特别是通过有符号右移实现取值范围从-128到127的转换。func2函数作为一个实例,详细解释了这种位操作的原理。
int
func1(unsigned word)
{
return (int)((word << 24) >> 24);
}
int
func2(unsigned word)
{
return ((int)word << 24) >> 24;
}
| w | func1(w) | func2(w) |
| 127 | 127 | 127 |
| 128 | 128 | 128 |
| 255 | 255 | -1 |
| 256 | 0 | 0 |
func2也是取数的低8位的值,但是是有符号的符号右移,取值范围是-128~127。
5976
797
370

被折叠的 条评论
为什么被折叠?