欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

快速理解javascript二进制的计算方法

程序员文章站 2022-05-08 22:50:56
...

什么是进制数

所谓进制数,就是满多少进位。
常用的十进制,个、十、百、千、万,逢十进一。
当前位最大值就是它的上一个进位减1。
十进制
1位最大值是9
两位最大值是99
三位最大值是999
八进制
一位最大值是7
两位最大值是77
三位最大值是777
十六进制
一位最大值是15
两位最大值是255
三位最大值是4095
二进制
一位最大值是1
两位最大值是3
三位最大值7

任何进制转十进制都很简单
二进制转十进制,例如:111=1*2^2+1*2^1+1*2^0=7
十六进制转十进制,例如:16=1*16^1+6^16^0=22
八进制转十进制,例如:44=4*8^1+4*8^0=36
十进制转二进制(用程序的就是除2取余,余数大于0就是1反之0):
128=10000000
但是我们平时不能什么都用程序来算是吧。只要我们记住常用的2次方值就行,
例如
2^0=1
2^1=2
2^2=4
2^3=8

2^7=128

8(2^7) 7(2^6) 6(2^5) 5(2^4) 4(2^3) 3(2^2) 2(2^1) 1(2^0)
二进制 128 64 32 16 8 4 2 1
128 1 0 0 0 0 0 0 0
130 1 0 0 0 0 0 1 0
144 1 0 0 1 0 0 0 0

上面的表格看懂了吗。自己心算一下

二进制

二进制是计算机机器码,因为CPU都是通过晶体管里面电路的电压状态表示0和1。如果在计算机中任何信息最终会被转换成二进制。计算机中一个字节=8位二进制
例如ASCII码是由7位二进制表示128个符号,unicode 编码有8、16、32位不同的编码格式,位数长,表示能容纳很多的字符。
javascript的二进制是32位有符号整数组成的二进制,计算方式采用的是补码形式.
符号由二进制最高位0表示正数1表示负数
例如下面:
我们创建一个了一个8位的类型数组。
8位的二进制最大值只能表示255,加上int8array是一个符号数组,代表值只能表示-128127之间。为什么不是-100155
为什么是这个区间,接下要说一下二进制的补码。

8(2^7) 7(2^6) 6(2^5) 5(2^4) 4(2^3) 3(2^2) 2(2^1) 1(2^0)
二进制 128 64 32 16 8 4 2 1
128 1 0 0 0 0 0 0 0
127 0 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0
-1 1 1 1 1 1 1 1 1

如果8位的二进制:01111111=127 因为最高位符号是0,0表示正数
如果8位的二进制:1000000=-128 因为最高位符号是1,1表示负数,然后1所在位置刚好是-1* 2^(8-1)=-128
如果8位的二进制:1000011=? 是多少,答案是:-128+1* 2^1 +1* 2 ^0=-126

二进制位超出怎么办?

下面的例子277打印出是21,为什么了。我们讲过8位最大的值是255,即是2^8-1=255
那么想要表示277,只能用9位二进制来表示
277=100010101,但是我们只有8位,没有9位,那么只能把左边超出八位全部去掉
100010101变成8位后:00010101 最第高位是0,表示正,即是正21

var int8=new Int8Array(1);// 创建一个8位有符号整数数组
int8[0]=277;
console.log(int8[0]);// 打印出来发现是21

RGB和十六进制

三原色是由Red green blue 三种颜色组成,每一种有256种即256256256=16777216,也就是这三种颜色可以能组合出16777216种颜色
RGB:rgb(255,255,255)
HEX:#ffffff
ff=255

十六制1-9,10=a,11=b,12=c,13=d,14=e,15=f
那么f二进制是:1111=15
两个ff的二进制是:11111111=255
从上面我们可以看出16进制最大值是15,15二进制是1111,刚才好4位长度可以表示.
11111111=255 转换16进制,可以把二进制变成四位一组
1111(15) 1111(15) =ff

相关标签: 二进制