二进制转十进制

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace 二转十
{
    class Program
    {
        /// <summary>
        /// 求次方
        /// </summary>
        /// <param name="number">那个数的次方</param>
        /// <param name="cifang">几次方</param>
        /// <returns>number^cifang</returns>
        static int CiFang(int number, int cifang)
        {
            int returnValue = 0; // 返回值
            if (number == 0) // 0的次方都是0
            {
                return returnValue;
            }
            if (cifang == 0) // 任何数的0次方都是1
            {
                returnValue = 1;
                return returnValue;
            }
            if (cifang == 1) // 任何数的1次方都是任何数
            {
                returnValue = number;
                return returnValue;
            }
            returnValue = number;
            // 
            for (int i = 1; i < cifang; i++)
            {
                //次方
                returnValue *= number;
            }
            //返回最终结果
            return returnValue;
        }
        static void Main(string[] args)
        {
            int[] randomInts = new int[5];
            Random r = new Random();
            for (int i = 0; i < randomInts.Length; i++)
            {
                randomInts[i] = r.Next(0, 2);
            }
            //遍历
            foreach (int i in randomInts)
            {
                Console.Write(i);
            }
            Console.WriteLine();
            Console.WriteLine("====================");
            //弄一个10个数值 0~1
            int number = 0;
            //使用按位展开法逆向得出10进制
            for (int i = 0; i < randomInts.Length; i++)
            {
                //1. 获取一个二进制位


                // if (randomInts[i] == 0)
                // {
                //     number += CiFang(0, randomInts.Length - 1 - i);
                // }
                //else
                // {
                //     number += CiFang(2, randomInts.Length - 1 - i);


                // }
                number += CiFang((randomInts[i] == 0) ? 0 : 2, randomInts.Length - 1 - i);


                // 2. 得知是N次方


            }
            Console.WriteLine(number);
            Console.ReadLine();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值