我试图将我的16位整数转换为2位补码(如果它是负数)。
目前,我正在使用One's补充运算符。我想我可以使用它,然后在二进制值中加1以将其转换为2的补码。但是,我无法做x = ~a + 1因为它只产生整数值+ 1.
如果我的进程正确,我该如何在二进制整数中加1?如果不是,在Objective-C中将16位整数转换为2的补码最合适的方法是什么?
答案 0 :(得分:0)
二进制补码是一种有符号数的表示,而不是值或操作。在几乎所有现代计算机上,两个补码是有符号整数的标准表示。 (它是标准中三个允许的整数表示之一。)
因此,如果您有任何有符号整数,则 以二进制补码表示。我想你想要一个正数的“两个”补码。如果你的机器对签名数字使用两个补码,那么这只是负值。
int positiveValue = 5;
int twosComplement = -positiveValue;