这是新年的一个节日,最后是一个空闲的日子,每天在各种各样的技术文章中游览是一个极好的境界。

下午我读了一篇关于JS的文章,有一段引起了我的注意。

复制代码代码如下所示:

(函数(){())

变量名{ };

返回函数(名称){

(名字)了;

}

功能了(name){

如果(!~ names.indexof(名字)) / /如果没有添加

Names.push(人名);

console.log(地名); / / 联翔} {

}

}())('linkfly);



如果(!~ names.indexof(名字))算子!什么意思,不懂,先从~开始。

可以发现,结果值有这个规则(x + 1)。

搜索几次,有些文章只会丢失一句话:颠倒二进制位。

从字面意义上讲,这里是八位二进制:3 = 000000 11,然后3 = 111111 00,上述公式是错误的。

上述解释过于抽象和空泛的。事实上,这涉及到原代码,补充,补充知识。

原代码

原代码表示最高位为符号位,位表示为正0,负1表示。绝对值的其他位数。

补充

对于一些符号,同一个源补码的正和负,除了在你之外的符号位计数器外,它的原始代码是补充的。

补充

原代码的正面和负面的补充,同样是真实的;负数的补码除了你带符号位之外,并在1底,为1号的一个补充。在计算机的计算机数量一般在补语的形式表示。补体(- 128)用D代替D(0)、(128)D注:没有相应的源代码和数据,(128)D(B = 10000000)。

补充操作

互补运算不考虑符号位、原始代码和1的底部。

以作者的文章为例,并理解它。

逆是逐位的逆,逆是如果它是00111,然后它变成11000(逐位)。

57的二进制表示为(1字节):00111001

逐位返回(~ 57)二进制:11000110这个表示是十进制:- 70

这是一个负数,符号数,负数在计算机中用它的补码表示:补码=符号位后逐位加1。

因此,返回位后的70(11000110)符号位(10111001),然后是1(10111010)。

小数改为:- 58

所以~ 57=58

最终,人们终于明白了,虽然总结式可以快速得出结果,但不能解释为什么,作为一个技术人员,我们喜欢学习,深入细致。

感叹时间:

基础是所有上层的基石。

以上是本文的全部内容,希望您能得到收入。