我必须对两个带符号的16位十六进制数字进行减法。 C352 - 36AE。当他们与他们做数学时,签名和未签名之间有什么区别?是唯一的解决方案将它们转换为二进制,执行签名减法,然后将答案转换回十六进制?谢谢。有符号十六进制减去vs无符号
3
A
回答
1
减法是两个相同的符号和无符号。不同的是结果是如何解释的。无符号数永远是负面的:
值0xFFFF -1签署。 0xffff是65,535无符号。
这是相同的数字。
1
16位有符号或无符号的相减的结果始终是16个比特(即按位减法的结果)加上与第17位是上溢位(signed减法)一个17位或进位(无符号减法)。如果你只有一个16位的结果,你有一个按位减法不是一个有符号或无符号的16位减法。许多系统一次产生全部三个结果,而不是指定有符号,无符号或逐位相减。如果您打算使用减号,则可以使用溢出位,如果您打算使用无符号减法,则使用进位位,或者不使用位运算。请注意,很多人不会看第17位,因为他们从输入范围知道他们不需要真正的16位减法。例如,如果我从一个数字中减去一个我知道在0到100之间的数字,我知道它在1000-2000之间,我不需要一个真正的16位减法,所以我不需要看第17位。注意:溢出和进位是由不同的规则导出的,并不相同,但两者之间的差异已在其他地方解释过,因此我不会在此复制该答案。
相关问题
- 1. 无符号长十六进制表示
- 2. 十六进制有符号的十进制
- 3. 十六进制到64有符号十进制
- 4. 将十六进制字符串转换为无符号字符[]
- 5. 转换十六进制数符号短
- 6. 变换符号和无符号的十六进制来分解和分解成十六进制C++
- 7. 如何将无符号数从符号转换为无符号(二进制和十六进制)?
- 8. 将十六进制字符串转换为无符号十进制值
- 9. 无符号字符十六进制到int十进制转换C++
- 10. 无符号字符数组,以十六进制表示的NSString
- 11. 使用无符号字符数组输入十六进制数
- 12. Arduino十六进制字符串为无符号long int转换
- 13. 十六进制QString表示为无符号字符数组
- 14. 转换十六进制字符串为无符号长
- 15. 无符号字符*值为十六进制
- 16. awk命令为十六进制转换为符号十进制
- 17. 有符号整数到二进制补码十六进制
- 18. 如何将8位十六进制值解释为无符号十进制数?
- 19. 将十进制数转换为二进制/十六进制/八进制符号
- 20. 减去文本框(十六进制)
- 21. 在mysql中减去十六进制字符串
- 22. 什么是无符号的值长长以十六进制
- 23. C++ trim和pad无符号整数,十六进制为#RGB值
- 24. 从无符号长十六进制转换为DWORD
- 25. Android蓝牙并发送一个无符号十六进制值
- 26. 将无符号整数转换为十六进制值
- 27. XSLT换行符显示为十六进制符号
- 28. C#建立十六进制符号字符串
- 29. 如何将无符号字符值表示为十六进制字符串?
- 30. C++:如何将十六进制字符转换为无符号字符?
如果它们是2的补码,那么你不需要做任何特殊的事情。 – 2012-03-24 20:02:32
啊,是的,对不起,他们是二的补充。所以假设二进制补码,以带符号的方式进行减法将与未经签名的答案相同? – rfmas3 2012-03-24 20:04:28
你试过了吗? – 2012-03-24 20:19:30