当前位置:   article > 正文

【计算机组成原理】强制类型转换_signed short 强制转换为signed long

signed short 强制转换为signed long

强制类型转换

C语言中定点整数用“补码”存储的

1、有符号和无符号数相互转换,不改变数据,只改变解释方式。

short x = -4321 // short两个字节
这里的x的补码为:1110 1111 0001 1111
unsigned short y = (unsigned short)x;
而此时y的值就为:61215
  • 1
  • 2
  • 3
  • 4

2、长整型变为短整型的数,高位截断,保留低位

int a = 165537, b = -34991; // int 占四个字节
a: 0x000286a1 c:0xffff7751
short c=(short)a, d = (short)b;
转为short需要截断16个bit的高位数据。
a:0x86a1 d:0x7751
  • 1
  • 2
  • 3
  • 4
  • 5

3、短整数变长整数,符号扩展(无符号扩展为“0”)

short x=-4321
x:0xef1f
x:1110 1111 0001 1111
int m=x;
m:1111 1111 1111 1111 1110 1111 0001 1111
unsigned short n = (unsigned short)x;
n:1110 1111 0001 1111
unsigned int p =n;
p:0000 0000 0000 0000 1110 1111 0001 1111


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/272298
推荐阅读
  

闽ICP备14008679号