![]() |
1
4
答案取决于你输入的低31位代表什么。
无符号输入:
二补(期望输出:-271317440)一个 整数是其中一个-1设置了所有位,并且从那里开始向下倒数。第一个位仍然充当符号位。
如果较低的31位表示2的补码整数,那么我认为您应该能够这样做:
这是因为Java在内部将整数存储在2的补码中:我们所做的就是向左移位,然后向右移位(有符号),这样符号位就被拾取,整数从31位变为32位。 互补(期望输出:-802424384)一 补足
如果较低的31位代表 补足 整数(即符号位后跟表示无符号量值的30位),然后需要将其转换为2的补码,以便Java正确地提取值。要做到这一点,只需提取较低的30位并乘以-1:
当我把-271317440除以3600000,得到-75.365955555556 ,所以我猜您的输入格式是2的补码,所以我的第一个和原始答案是正确的。 |
![]() |
2
0
|