【发布时间】:2017-04-19 10:15:59
【问题描述】:
这个函数:int signextend( int value, int size )
接收带符号二进制的值(最高有效位表示信号 + 如果它是 0 或 - 如果它是 1)并且它接收这个二进制值的大小。
目标是将值扩展到已签名的 int 大小。我该怎么做?
如果最高有效位是 1 或 0,我知道我需要 2 if's one 以用 1 或 0 扩展它,但我不知道如何从值中选择最高有效位
【问题讨论】:
-
size是否以字节或位指定源数据的大小?以前这里有多个符号扩展问题,这个问题可能是重复的。 -
@njuffa size 指定值的位数,例如我收到 1011 所以 size = 4,我想选择左侧的位,在本例中为 1。并扩展它( int size = 32-size (在这种情况下为 4) 次向左所以它就像 11111....111111011
-
长度为4的二进制字符串1011是表示十进制数-5(2的补码表示)、-4(1的补码表示)还是-3(符号和大小表示)?