我需要你的帮助,这是我的代码的一部分,但有一个我无法解决的问题。
请帮助我;
这就是我现在所做的,我可以得到16位二进制形式的正整数
`
Console.WriteLine("Enter an integer : ");
string inputnumber = Console.ReadLine();
int num = int.Parse(inputnumber);
string value = Convert.ToString(num, 2).PadLeft(16, '0');
Console.WriteLine("The bits are : {0}", value);
Console.ReadKey();`
问题是如何获得16位二进制形式的整数的负值
等;当我输入5时,我可以得到:0000000000000101
and i need -5 -------------> 1111111111111011
答案 0 :(得分:4)
在C#int
中是32位类型。您应该使用short
(16位类型)。对于高达32767的正数,int
和short
的第一个(较低的)16位是相同的,但对于负数,它是不同的。
short num = short.Parse(inputnumber);
答案 1 :(得分:0)
这是一种正确的行为,因为它以这种方式存储在计算机中。这就是所谓的two's complement,其中最重要的位(最左边)告诉你这是一个负数。还要记住int包含32位