【发布时间】:2017-09-16 00:38:48
【问题描述】:
如果它是负数,我正在尝试将我的 16 位整数转换为二进制补码。
目前,我正在使用 One 的补码运算符。我想我可以使用它,然后将二进制值加 1 以将其转换为二进制补码。但是,我无法执行 x = ~a + 1,因为这只会产生整数值 + 1。
如果我的过程是正确的,如何将 1 加到二进制整数上?如果不是,那么在 Objective-C 中将 16 位整数转换为 2 的补码最合适的方法是什么?
【问题讨论】:
如果它是负数,我正在尝试将我的 16 位整数转换为二进制补码。
目前,我正在使用 One 的补码运算符。我想我可以使用它,然后将二进制值加 1 以将其转换为二进制补码。但是,我无法执行 x = ~a + 1,因为这只会产生整数值 + 1。
如果我的过程是正确的,如何将 1 加到二进制整数上?如果不是,那么在 Objective-C 中将 16 位整数转换为 2 的补码最合适的方法是什么?
【问题讨论】:
二进制补码是有符号数的一种表示,而不是值或运算。在几乎所有现代计算机上,二进制补码是有符号整数的标准表示。 (它是标准中允许的三种整数表示之一。)
因此,如果您有任何带符号整数,它 以二进制补码表示。我认为你想要一个正数的“the”二进制补码。如果您的机器对有符号数使用二进制补码,这只是负值。
int positiveValue = 5;
int twosComplement = -positiveValue;
【讨论】: