繁体   English   中英

十进制到二进制格式的转换

[英]Decimal to Binary Format Conversion

我必须编写Java程序作为赋值的一部分,以将十进制输入转换为以下格式: 无符号二进制,无符号十六进制,有符号幅度,1的补码和2的补码 问题是不允许我使用任何内置的Java组件,否则这些组件不会使它变得如此困难。 我已经为此工作了好几个小时,而我想做的最后一件事就是来这里寻求帮助,但是我真的很沮丧。 我没想到,我也没有寻找任何人为我完成家庭作业。 我所要求的只是朝着正确方向前进。

程序的输出/输入必须如下:

Enter num bytes: 2

Enter number (or Q to quit): 4095

Input number=4095
    Unsigned binary = 0000 1111 1111 1111   (0x0fff)
    Signed-magnitude = 0000 1111 1111 1111
    One's complement = 0000 1111 1111 1111
    Two's complement = 0000 1111 1111 1111
    Excess 32768 = 1000 1111 1111 1111

Enter number (or Q to quit): -4095

Input number=-4095
    Unsigned binary = undefined
    Signed-magnitude = 1000 1111 1111 1111
    One's complement = 1111 0000 0000 0000
    Two's complement = 1111 0000 0000 0001
    Excess 32768 = 0111 0000 0000 0001

我对如何计算这些值有很好的了解,因此我已经制定了许多算法。 我遇到的问题是我不知道如何正确组织我的班级以使该程序高效。 通常,我对收到的指示感到困惑。

他们的内容如下:

不要在Java中使用字节数据类型。 我们想展示用于进行二进制编码的算法。 我创建了一个简单的BitString类。 一个字段是char的数组。 它具有以下方法:BitString(numBytes),clear(),invert(),encodeUnsigned(num),setBit(pos,char)。

我不明白为什么我们要使用char数组来存储这些位值。 我进行了设置,以使BitString中的构造函数接受字节数的参数,将其乘以8,然后使用该数字创建一个新的char数组。 然后,为了获得小数的无符号二进制值,我实现了以下内容:

String unsigned = "";
while(decimal > 0)
{
  unsigned = decimal%2 + unsigned;
  decimal = decimal >> 1;
}

我不知道该怎么做才能将这些值存储在该数组中,以便可以使用它来计算其他格式。 我似乎无法将整数存储为char,并且我对如何使用该数据结构执行其他操作感到困惑。 为了进一步使事情复杂化,您会注意到我需要填充数据,以使其包含正确的位数。

如果这是您的问题,您将如何解决?如何布置? 我正在寻找最基本的解决方案,对于像我这样的新手来说很容易理解。 非常感谢你。

这些说明可能意味着

String unsigned = "";

数据将更容易通过其他类似的方式处理为其他格式(这是伪代码,我不太了解java):

char unsigned[numBytes * 8];

阵列每个位置存储一位。

要进行按位运算,您只需遍历数组并对每个“位”进行运算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM