0000 0000 0000 0000
为了表示`正`与`负`,先辈们就发明了 **原码**,把`左边第一位`腾出来,存放符号,`正数用 0` 来表示,`负用 1` 来表示
复制代码
关于十进制整数转二进制,其实很简单,记住一个秘诀,就能够了markdown
除 2 取余,逆序排列
复制代码
就是用 2 整除十进制数,获得商和余数,再用 2 整除商,获得新的商和余数,一直重复直至商等于 0,将先获得的余数做为二进制数的高位,后获得的余数做为二进制数的低位,依次排序便可oop
例如,咱们将十进制 55 转换为 2 进制post
55 % 2 // 商 27 余 1
27 % 2 // 商 13 余 1
13 % 2 // 商 6 余 1
6 % 2 // 商 3 余 0
3 % 2 // 商 1 余 1
1 % 2 // 商 0 余 1
复制代码
取余逆序,那么十进制 55 转 2 进制的结果就是 110111
spa
如十进制 55 的 8 位二进制即 00110111
,那么可能还会有人为若是是 4 位怎么办呢,4 位是存不了 55 这么大值的,溢出了code
可能还有人不了解十进制小数是怎么转二进制的,其实也有方法口诀orm
乘 2 取整,顺序排列
复制代码
复制代码
用 2 乘十进制小数,能够获得积,将积的整数部分取出,再用 2 乘余下的小数部分,又获得一个积,再将积的整数部分取出,如此进行,直到积中的整数部分为零,或者整数部分为1,此时 0 或 1 为二进制的最后一位或者达到所要求的精度为止,而后把取出的整数部分按顺序排列起来,先取的整数做为二进制小数的高位有效位,后取的整数做为低位有效位排序
例如,将十进制小数 0.625
转二进制get
0.625 * 2 = 1.250 // 取整数 1
0.25 * 2 = 0.50 // 取整数 0
0.5 * 2 = 1 // 取整数 1 并结束
复制代码
复制代码
取整顺序,那么十进制小数 0.625
的二进制即为 0.101
string
若是该十进制值是一个大于 1 的小数,那么整数部分和小数部分分别取二进制再拼接便可it
例如,将十进制小数 5.125
转二进制
咱们先计算整数 5 的二进制
5 % 2 // 商 2 余 1
2 % 2 // 商 1 余 0
1 % 2 // 商 0 余 1
复制代码
复制代码
那么 5 的二进制即 101
,再来看小数部分
0.125 * 2 = 0.250 // 取整数 0
0.25 * 2 = 0.50 // 取整数 0
0.5 * 2 = 1 // 取整数 1 并结束
复制代码
复制代码
那么小数部分 0.125
的二进制即 001
,拼接可得出十进制数字 5.125
的二进制为 101.001
还会有一种状况,例如十进制小数 0.1
取其二进制
0.1 * 2 = 0.2 // 取整数 0
0.2 * 2 = 0.4 // 取整数 0
0.4 * 2 = 0.8 // 取整数 0
0.8 * 2 = 1.6 // 取整数 1
0.6 * 2 = 1.2 // 取整数 1 -> 到此咱们看到开始无限循环了
0.2 * 2 = 0.4 // 取整数 0
0.4 * 2 = 0.8 // 取整数 0
...
复制代码
复制代码
那么它的二进制就是 0.0001100......
这样反复循环,这也引出了咱们在语言层面的问题,例如 JS 中被人诟病的 0.1 + 0.2 != 0.3
的问题,咱们后面再说
上述介绍来源,详细解释请参考-连接地址:juejin.cn/post/689794…
12 & 8 结果是 8
0000 0000 0000 1100 12的二进制
& 0000 0000 0000 1000 8的二进制
------------------------------------------------
0000 0000 0000 1000 结果: 8的二进制
参考公式图,从第一位数一一比对结果,得出结果是8的二进制,转十进制及为8
复制代码
4 & 8 结果是 12
0000 0000 0000 0100 4的二进制
| 0000 0000 0000 1000 8的二进制
------------------------------------------------
0000 0000 0000 1100 结果:12的二进制
参考公式图,从第一位数一一比对结果,得出结果是12的二进制,转十进制及为12
复制代码
31 & 22 结果是 9
0000 0000 0001 1111 31的二进制
^ 0000 0000 0001 0110 22的二进制
------------------------------------------------
0000 0000 0000 1001 结果: 9的二进制
参考公式图,从第一位数一一比对结果,得出结果是9的二进制,转十进制及为9
复制代码
~123 结果是-124
~ 0000 0000 0111 1011 123的二进制
------------------------------------------------
1111 1111 1000 0100 结果: 9的二进制
参考公式图,从第一位数一一比对结果,得出结果是9的二进制,转十进制及为9
复制代码
0000 0000 0000 1101
按位数对应:
1*2º + 0*2¹ + 1*2² + 1*2³ = 13
复制代码
2的0次方是1(任何数的0次方都是1,0的0次方无心义)\
参考公式: