js字符串的长度

字符串的最大长度与js中能表达的【最大安全整数】有关系,这是为什么呢

字符串的最大长度受字符串的编码方式影响

什么是编码方式 ASCII码 unicode编码 utf-8 utf-16 utf-32
编码方式.png

utf-8.png

上图是utf-8转化规则,比如对汉字"严"进行utf-8转化,"严"的unicode码 U+4E25(U+:Unicode编码)
1、U+4E25转为二进制 1001110 00100101
2、根据上图转化方式,一个字节8位,需要3个字节才能装得下(若是utf-16编码就不不是这个长度了)
【11100 100】【10 111000】【10 100101】
转化成十六进制E4B8A5

utf-16相关:

utf-16.png

参考:https://blog.csdn.net/hongsong673150343/article/details/88584753

js中Number类型是8字节(64位 1B字节=8b位)的double双精度浮点数定义的

符号位1 指数为11 位位尾数位52 (1+11+52=64)
那应该是2^52-1 才对,但小数点前保留一位规格化后始终是1.***这个不需要存,所以这样就成了2^53-1
我理解是:只要转码后的二进制总长度不超出2^53-1就行,但是不一样的编码方式转码后的二进制长度不相同,所以字符串最大字符长度受字符串编码方式影响

同时也了解了一下

负数求二进制
例:-14
原码->反码->补码
原码 0000 1110 (14= 2^3 + 2^2 + 2^1)
反码 1111 0001(按位取反)
补码 1111 0010(反码加一)
小数二进制
例:1.5的二进制1.1,二进制1.1反推回去:1 * 2^0 + 1 * 2^(-1)=1.5

你可能感兴趣的:(js字符串的长度)