Scala语言学习-02-实现十进制转换为二进制(Int类型数据)

该博客详细介绍了使用Scala实现将Int类型数据从十进制转换为二进制的过程。在RedHat Enterprise Linux Server 7.9环境下,利用JDK 1.8.0_171和Scala 3.1.2,通过编写源码展示了转换功能。测试结果包括-126和130的转换过程,展示了一种清晰的二进制表示方法。
摘要由CSDN通过智能技术生成

一、测试环境

名称版本
操作系统Red Hat Enterprise Linux Server release 7.9 (Maipo)
CPU12th Gen Intel® Core™ i7-12700H
内存5G
JDK1.8.0_171
Scala3.1.2

二、功能实现

Int类型数据由十进制转换为二进制。

三、源码

object Decimal2Binary {
    def PrintDecimalSystemArray(TempArray: Array[Int], TempArraySize : Int): Unit = {
        var i: Int = 0
        val SpaceNum = 4
    
        for(i <- 0 until TempArraySize){
            printf("%d",TempArray(i))
            if((i+1) % SpaceNum == 0) {
                printf(" ")
            }
        }
        printf("\n")
    }
    
    def DecimalSystem2Binary(DecimalNum: Int): Unit = {
        val ArraySize: Int = 32
        var TempNum: Int = DecimalNum
        var RemainderArray: Array[Int] = new Array[Int](ArraySize)
        val SystemNum = 2
        var i: Int = 0
        var Flag: Int = 1 // 1 : + , -1 : -
        
        for(i <- 0 until ArraySize){
            if(i == 0 && DecimalNum < 0){
                RemainderArray(i) = 1
                Flag = -1
            }
            else {
                RemainderArray(i) = 0
            }
        }
    
        //PrintDecimalSystemArray(RemainderArray, ArraySize)
        
        i = ArraySize - 1
        
        while(TempNum != 0){
            RemainderArray(i) = (TempNum % SystemNum).abs
            printf("%4d / %d = ",TempNum,SystemNum)
            TempNum = TempNum / SystemNum
            printf("%4d --- %2d\n",TempNum,RemainderArray(i) * Flag)
            i -= 1
        }
    
        PrintDecimalSystemArray(RemainderArray, ArraySize)
    }
    def main(args: Array[String]): Unit = {
        DecimalSystem2Binary(-126)
        DecimalSystem2Binary(130)
    }
}

四、编译

[root@node0 src]# scalac Decimal2Binary.scala -d ../test/

五、测试结果

[root@node0 test]# scala Decimal2Binary
-126 / 2 =  -63 ---  0
 -63 / 2 =  -31 --- -1
 -31 / 2 =  -15 --- -1
 -15 / 2 =   -7 --- -1
  -7 / 2 =   -3 --- -1
  -3 / 2 =   -1 --- -1
  -1 / 2 =    0 --- -1
1000 0000 0000 0000 0000 0000 0111 1110 
 130 / 2 =   65 ---  0
  65 / 2 =   32 ---  1
  32 / 2 =   16 ---  0
  16 / 2 =    8 ---  0
   8 / 2 =    4 ---  0
   4 / 2 =    2 ---  0
   2 / 2 =    1 ---  0
   1 / 2 =    0 ---  1
0000 0000 0000 0000 0000 0000 1000 0010
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值