显示整数的16位

时间:2015-10-11 19:39:01

标签: c# complement

我需要你的帮助,这是我的代码的一部分,但有一个我无法解决的问题。  请帮助我; 这就是我现在所做的,我可以得到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

2 个答案:

答案 0 :(得分:4)

在C#int中是32位类型。您应该使用short(16位类型)。对于高达32767的正数,intshort的第一个(较低的)16位是相同的,但对于负数,它是不同的。

short num = short.Parse(inputnumber);

答案 1 :(得分:0)

这是一种正确的行为,因为它以这种方式存储在计算机中。这就是所谓的two's complement,其中最重要的位(最左边)告诉你这是一个负数。还要记住int包含32位