eastingcw / blog Goto Github PK
View Code? Open in Web Editor NEWMy world.
My world.
在讲转换之前,我们来了解下两种进制的概念。十进制是我们从小就开始学习的,可以说非常熟悉,之所以使用这么广泛,很有可能跟我们有十根手指有关。所谓【十进制】,就是:
数值的每一位都由0~9组成,共有10种状态,逢十进一,为十进制
二进制在生活中可以说基本用不到,但是它是计算机底层的编码组成,就是所谓的机器语言。同样二进制的理解可以这样:
数值的每一位都由0和1两种状态组成,逢二进一,为二进制
[二进制]->[十进制]
当然,二进制和十进制一样,能够表示正数也能够表示负数,我们这里只讨论基本的正整数的进制转换,不涉及负数和小数。我们先来看一个十进制整数650分解到每一位后的表示方法:
650
=600+50+0 (百、十、个)
=6×100+5×10+0×1
=6×10^2+5×10^1+0×10^0(注意10^2表示10的2次方)
从上面的分解过程我们可以将每一位上的数归纳为以下公式
=m×10^n
:m表示当前位的值,n表示当前位右边有n个数。
_例如:_百位6×10^2的理解就是当前位数值m是6,指数2表示当前百位右边还有2个数。
十进制是以10为底的指数,同样,二进制不同就是以2为底的指数,二进制的每一位表示公式如下:
=m×2^n
:m表示当前位的值,n表示当前位右边有n个数。
根据以上公式我们可以试着来转换一个二进制数值:
11011
=1×2^4+1×2^3+0×2^2+1×2^1+1×2^0
=2^4+2^3+2^1+2^0
=16+8+2+1
=27
从上面的计算我们可以看到,二进制只有0和1,所以我们一般计算的时候只要考虑有1的位,然后把他们求和就可以了。
[十进制]->[二进制]
十进制转二进制其实不止一种方法,有除二取余法、凑数法等等,这里我们介绍**[凑数法]**。那什么是凑数法呢?我们知道在二进制中,每一位都是2的指数幂,所以我们可以将一个十进制数先拆开,凑成几个2的指数的和,然后将拆开的数的指数填入对应二进制位。先来看个_例子_:
123
=64+32+16+8+2+1
=2^6+2^5+2^4+2^3+2^1+2^0
=2^(7-1)+2^(6-1)+2^(5-1)+2^(4-1)+2^(2-1)+2^(1-1)
=1111011
从上面可以看出,第7、6、5、4、2、1位上有1值,其余为0,所以我们将这些位填上1,第三位填入0,结果即为1111011。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.