我正在编写一个程序来进行数字系统转换。 我遇到的问题是当我输入一个二进制补码时,Java将其作为一个正二进制数,例如,如果我输入11111101作为-3而不是程序接收为253.我怎样才能使程序接收 - 3。
答案 0 :(得分:0)
虽然没有直接解决标题,但是对您的输入进行符号扩展是迈向该目标的一步。以下是一些在更一般的情况下对该工作进行签名扩展的方法,而不仅仅是当输入为8或16或32位时。
(x << k) >> k
其中k
是&#34;未使用的&#34;位。因此,例如,要将8位数字扩展为32位数字,k
将为24。(x ^ m) - m
,其中m
是一个掩码,其中1与输入的符号位置完全相同。例如,对于8位输入,m = 1 << 7
。优点是它只取决于输入,而不是你转换为的类型 - 对于Java而言,它并不是真正的考虑因素,但这使得它在模板化C ++代码中的应用具有吸引力。