javascript 红皮高程(15)

接上一次,今次来讲操作符的 按位非(NOT)

这个,按位非操作符是,~ 波浪线,而它的执行结果,就是返回数值的反码。

==========

这个反码是什么意思?

还是要回到前次我们讲过的二进制转换:

17转成二进制是:

17/2=8,余1,没整除,1

8/2=4,整除了,0

4/2=2,整除了,0

2/2=0,整除了,0

1/2=0.5,没整除,1

从下往上排,10001,

这就是17的二进制数。

如果是-17呢?

它的二进制是什么样呢?

长话短说,

先求得-17的绝对值(17)的二进制码,

0000 0000 0000 0000 0000 0000 0001 0001

然后,求得它的反码,

1111 1111 1111 1111 1111 1111 1110 1110

(上面这行,就是反码)

然后是反码+1

1111 1111 1111 1111 1111 1111 1110 1110
                                      1
---------------------------------------
1111 1111 1111 1111 1111 1111 1110 1111

又因为,在处理有符号整数时,不能访问第31位,

所以,最后输出时(从右向左数五个数),就是,

-10001

其实这整个过程ECMAScript是按下不表的,我们能看到的输出就是-10001。

刚才为什么是从右向左查5个数呢?

因为18除2除2一路除下来,到最后只有5个数,其它的都是用来补位的0 。

===========

到现在各位应该知道反码是个意思了,它就是1变0,0变1。

看小例子:

为什么-18的二进制最右边是1而不是0呢?

因为二进制反码加1

书上第40 - 41页

上图我们对18进行了按位非操作,结果变成了-19。

按书上41页最顶一行的说法,按位非的本质,就是操作数的负值-1

它的优势就是在数值的最低层执行的操作,速度快!

唯快不破啊

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2016-03-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码匠的流水账

聊聊storm的WindowedBolt

storm-2.0.0/storm-client/src/jvm/org/apache/storm/topology/IWindowedBolt.java

2074
来自专栏Albert陈凯

2018-04-17 Java的Collection集合类3分钟搞掂Set集合前言

3分钟搞掂Set集合 前言 声明,本文用的是jdk1.8 现在这篇主要讲Set集合的三个子类: HashSet集合 A:底层数据结构是哈希表(是一个元素为链...

2977
来自专栏Fish

蓝桥杯 幸运数

先说题意。题意有点长,我还是复制粘贴吧。。。 问题描述 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从1开始写出自然数1,...

3126
来自专栏HansBug's Lab

3402: [Usaco2009 Open]Hide and Seek 捉迷藏

3402: [Usaco2009 Open]Hide and Seek 捉迷藏 Time Limit: 3 Sec  Memory Limit: 128 MB ...

3407
来自专栏landv

c语言_头文件_stdlib

1793
来自专栏软件开发 -- 分享 互助 成长

CRC校验码

循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明...

2446
来自专栏HansBug's Lab

1081: [SCOI2005]超级格雷码

1081: [SCOI2005]超级格雷码 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 301  Solv...

2596
来自专栏HansBug's Lab

1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏

1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏 Time Limit: 5 Sec  Memory Limit: 64 MB Sub...

2726
来自专栏LhWorld哥陪你聊算法

Hadoop源码篇--Reduce篇

Reduce文件会从Mapper任务中拉取很多小文件,小文件内部有序,但是整体是没序的,Reduce会合并小文件,然后套个归并算法,变成一个整体有序的文件。

2181
来自专栏PPV课数据科学社区

【学习】七天搞定SAS(二):基本操作(判断、运算、基本函数)

SAS生成新变量 SAS支持基本的加减乘除,值得一提的是它的**代表指数,而不是^。 * Modify homegarden data set with ass...

4394

扫码关注云+社区