#关于js中数字的位数
在 JavaScript 中,数字(无论是整数还是浮点数)在内存中的表示是 64 位双精度浮点数格式。 当使用 JavaScript 进行位运算(例如按位与、按位或等)时,操作数会临时被视为有符号的 32 位整数来处理,并按照这种格式进行计算。
javascript,数字,64位
进行二进制计算的时候,32位,其中一位是符号位
在javascript中,数字统一用64位表示,但是在进行二进制计算的时候,统一采用32位二进制进行计算.
#lane模型中的二进制表示
export const NoLanes= 0b0000000000000000000000000000000;
export const NoLane = 0b0000000000000000000000000000000;
export const SyncHydrationLane = 0b0000000000000000000000000000001;
export const SyncLane = 0b0000000000000000000000000000010;
...
#二进制的计算 (与、或、非、取反、异或、左移、右移...)
我们主要掌握,与、或、取反
// 与运算
0b0000001000000000000000000000000
& 0b0000010000000000000000000000000
-----------------------------------
0b0000000000000000000000000000000
// 或运算
0b0000001000000000000000000000000 A
| 0b0000010000000000000000000000000 B
-----------------------------------
0b0000011000000000000000000000000 C
// 取反运算
~ 0b0000001000000000000000000000000
-----------------------------------
0b1111110111111111111111111111111
fiber对象,对应了多个任务,每个任务都有一个优先级
let lane = 0
lane = 0b0000001000000000000000000000000 //A
lane = 0b0000011000000000000000000000000 //A | B
lane & -lane,得到最右侧的1所对应的值
负数,由对应正数按位取反 + 1 ,也称之为补码: -lane = ~lane + 1
~0b0000011000000000000000000000000 //lane
-----------------------------------------
0b1111100111111111111111111111111 //~lane
0b0000000000000000000000000000001 //~lane
+ 0b1111100111111111111111111111111 //1
------------------------------------------
0b1111101000000000000000000000000 // -lane
0b0000011000000000000000000000000 lane
& 0b1111101000000000000000000000000 -lane
------------------------------------------
0b0000001000000000000000000000000 //lane & -lane