利用数组实现十进制数转换为各种进制数

      主要是利用查表法来进行数制转换,利用一个数组存储非十进制的各种符号,在用“与”操作把每一位数取出来通过查表得出转换后的字符并存入另一个数组中,最后打印出这个数组中的内容就完成了数制转换。

    public static String toBin(int num)
    {
        
        //用数组来存放所需要查询的表
        char[] chs = {'0','1'};
        //用一个数组来存放转换后的数字,整型参数有4个字节,最大32个bit
        char[] arr = new char[32];
        //pos用来指示放在arr中数字的位置,从最后一个开始放起可以避免输出时反向。
        int pos = arr.length;
        String s = new String();
        
        if(num == 0)
            return "";
        while(num != 0)
        {
            //每次取一位,将取到的1位放到arr数组里,从arr数组的最后一位开始放起
            int temp = num & 1;
            //用--pos可以使pos总是指向有数字的位置,因为数组中无数值的部分是“空”,
            //此时初始化pos的时候就不能为length-1,否则到0位置的时候就会出错!
            arr[--pos] = chs[temp];
            num = num >>> 1;
        } for(int i = pos;i<arr.length;i++)
        {
            //System.out.print(arr[i]);
            s += arr[i];
        }      
        return s;
    }

    上面的程序实现了从十进制转换到二进制的功能,使用“与”操作+右移操作可以在不区分正负数的情况下进行转换,负数转换的结果也很正确。同理可以得出十进制转十六进制的方法。

   public static String toHex(int num)
    {

        //用数组来存放所需要查询的表
        char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        //用一个数组来存放转换后的数字,整型参数有4个字节,最大32个bit
        char[] arr = new char[32];
        //pos用来指示放在arr中数字的位置,从最后一个开始放起可以避免输出时反向。
        int pos = arr.length;
        String s = new String();

        if(num == 0)
            return "";
        while(num != 0)
        {
            //每次取一位,将取到的1位放到arr数组里,从arr数组的最后一位开始放起
            int temp = num & 15;
            //用--pos可以使pos总是指向有数字的位置,因为数组中无数值的部分是“空”,
            //此时初始化pos的时候就不能为length-1,否则到0位置的时候就会出错!
            arr[--pos] = chs[temp];
            num = num >>> 4;
        }

        for(int i = pos;i<arr.length;i++)
        {
            //System.out.print(arr[i]);
            s += arr[i];
        }
        return s;
    }

    从这两个程序发现,两个函数数值转换的主要部分的操作基本上是一样的,因此我们可以将相同的部分提取出来,写成一个函数,再用这个函数实现各种数值的转换!转换函数入下:

    /*
     * 十进制数转换功能,base表示基数,2进制为1,8进制为7,16进制为15;
     * offset表示每次与之后的偏移量,2进制为1,8进制为3,16进制为4
     */
     public static String trans(int num,int base,int offset)
    {

        //用数组来存放所需要查询的表
        char[] chs = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        //用一个数组来存放转换后的数字,整型参数有4个字节,最大32个bit
        char[] arr = new char[32];
        //pos用来指示放在arr中数字的位置,从最后一个开始放起可以避免输出时反向。
        int pos = arr.length;
        String s = new String();

        if(num == 0)
            return "";
        while(num != 0)
        {
            //每次取一位,将取到的1位放到arr数组里,从arr数组的最后一位开始放起
            int temp = num & base;
            //用--pos可以使pos总是指向有数字的位置,因为数组中无数值的部分是“空”,
            //此时初始化pos的时候就不能为length-1,否则到0位置的时候就会出错!
            arr[--pos] = chs[temp];
            num = num >>> offset;
        }

        for(int i = pos;i<arr.length;i++)
        {
            //System.out.print(arr[i]);
            s += arr[i];
        }
        return s;
    }

    最后各种转换入下

    /*
     * 十进制数转8进制数
     */
    public static String toOx(int num)
    {
        return trans(num,7,3);
    }
    /*
     * 十进制数转2进制数
     */
    public static String toOx(int num)
    {
        return trans(num,1,1);
    }
    /*
     * 十进制数转16进制数
     */
    public static String toOx(int num)
    {
        return trans(num,15,4);
    }



 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 VBA 的 "DecimalToBinary" 函十进制转换为二进制。示例代码如下: ``` Sub DecimalToBinary() Dim decimals() As Long decimals = Array(10, 15, 20, 25) Dim binary As String For i = LBound(decimals) To UBound(decimals) binary = DecimalToBinary(decimals(i)) MsgBox "十进制字: " & decimals(i) & " 转换为二进制: " & binary Next i End Sub ``` 在上面的代码中,使用了一个名为 "DecimalToBinary" 的函,用来将十进制转换为二进制,然后在循环中遍历数组中的每个元素,并将其转换为二进制,最后使用 MsgBox 函显示结果。 ### 回答2: VBA 是 Visual Basic for Applications 的缩写,它是一种用于在应用程序中编写宏的编程语言。要将数组中的十进制转换为二进制,可以使用 VBA 中的位操作符和循环来实现。 首先,需要定义一个包含十进制字的数组,可以使用 VBA 中的 Array 函来创建一个数组。例如: Dim decimalArray() As Integer decimalArray = Array(10, 15, 23, 6) 接下来,需要编写一个循环来遍历数组中的每个元素,并将其转换为二进制。可以使用 VBA 中的 For Each 循环来实现。例如: Dim binArray() As String Dim decNum As Integer For Each decNum In decimalArray Dim binNum As String binNum = "" Do While decNum > 0 binNum = (decNum Mod 2) & binNum decNum = decNum \ 2 Loop binArray = VBA.Array(binNum) Next 在这个例子中,使用一个名为 binNum 的字符串变量来存储进制字。通过不断地取十进制的模除以 2,并将结果与 binNum 字符串连接起来,最后得到的就是十进制的二进制表示。 最后,我们使用 VBA 中的 Array 函来创建一个包含所有二进制字的数组 binArray,并输出结果: For Each binNum In binArray Debug.Print binNum Next 这样,就可以将数组内的十进制转换为二进制,并打印输出结果。 ### 回答3: 在VBA中,可以使用一些简单的步骤将数组内的十进制转换为二进制。 首先,我们需要定义一个数组并将十进制字赋值给它。例如,我们可以定义一个名为decimals的数组,并将十进制字放入其中。 然后,我们可以使用For循环来遍历数组中的每个字,并使用VBA的内置函来将其转换为二进制。在每次循环中,我们将当前的十进制字赋值给一个变量,并使用VBA的函Bin()将其转换为二进制。将转换后的二进制存储在一个新的数组binary中。 最后,我们可以通过输出数组binary的每个元素来显示转换后的二进制字。 下面是一个示例代码: ```vba Sub DecimalToBinary() Dim decimals(1 To 3) As Integer '定义一个包含3个十进制字的数组 Dim binary() As String '存储转换后的二进制字 Dim i As Integer '计器 decimals(1) = 10 '赋值给数组元素 decimals(2) = 15 decimals(3) = 7 ReDim binary(1 To UBound(decimals)) '调整binary数组的大小与decimals数组相同 For i = 1 To UBound(decimals) Dim dec As Integer dec = decimals(i) binary(i) = Application.WorksheetFunction.Dec2Bin(dec) '将十进制转换为二进制存储在binary数组中 Next i For i = 1 To UBound(binary) Debug.Print binary(i) '输出转换后的二进制字 Next i End Sub ``` 在此示例中,我们定义了一个包含3个十进制字的数组,并将它们转换为二进制字。最后,我们通过使用Debug.Print语句将转换后的二进制字输出到调试窗口。您可以根据需求更改数组的大小或字的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值