1

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

2 回答 2

4

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

short num = short.Parse(inputnumber);
于 2015-10-11T19:42:35.213 回答
0

这是正确的行为,因为它以这种方式存储在计算机中。这就是所谓的二进制补码,其中最高有效位(最左边)告诉您这是一个负数。还要记住 int 包含 32 位

于 2015-10-11T19:43:41.833 回答