go语言操作符 ^ 和 &^

Python09

go语言操作符 ^ 和 &^,第1张

很多语言都是采用 ~ 作为按位取反运算符,Go 里面采用的是 ^ 。

如果作为二元运算符,^ 表示按位异或,即:对应位相同为 0,相异为 1。

操作符 &^,按位置零,例如:z = x &^ y,表示如果 y 中的 bit 位为 1,则 z 对应 bit 位为 0,否则 z 对应 bit 位等于 x 中相应的 bit 位的值。

对于有符号的整数来说,是按照补码进行取反操作的(快速计算方法:对数 a 取反,结果为 -(a+1) ),对于无符号整数来说就是按位取反

计算过程

以3为例  3在内存中补码为 0*** 0011

取反            1*** 1100

-1操作          1*** 1011

除符号位取反    1*** 0100 结果为-4

-------------------------------------------

以9为例 9在内存中补码为 0*** 1001

取反            1*** 0110

-1操作          1*** 0101

除符号位取反    1*** 1010 结果为-10

-------------------------------------------

以-5为例 -5在内存中为的补码为 1*** 1011

为什么呢

-5源码          1*** 0101

除符号取反      1*** 1010

+1操作          1*** 1011

-------------------------------------------

那么-5取反怎么算

补码 1***1011取反为 0***0100

因为符号位为0,所以是正数了,正数的补码反码源码都是一个,所以是4

===================================

再看-1

-1源码          1*** 0001

除符号取反      1*** 1110

+1操作          1*** 1111

补码 1*** 1111 取反为 0*** 0000

因为符号位为0,所以是正数了,正数的补码反码源码都是一个,所以是0

go语言取反输出的例子看这里

1、首先要知道,换算规则:原码转换为反码:符号位不变,数值位分别“按位取反” 。

2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变,数值位分别“按位取反”。

3、然后就是,原码转换为补码的规则:符号位不变,数值位按位取反,末位再加1。

4、最后补码转换为原码:符号位不变,数值位按位取反,末位再加1,即补码的补码等于原码。

5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反,末位再加1。

一般打印机都有自己的驱动程序光盘,现在光盘多是自启动的,插入光驱之后,自动运行,直接按提示安装即可。如果没有驱动程序,就上网下载你打印机对应的型号的驱动程序之后,在开始——设置——打印机和传真——添加打印机——下一步——连接到本地打印机——下一步——从磁盘安装——选择你驱动程序所在的光驱或者下载到本机的路径——下一步完成即可。

正常安装不需要填写打印机名,共享时需要填写打印机共享名,也可以不填,保持默认即可。

另外提示一点,选择驱动程序或者下载驱动程序时,必须与你电脑操作系统相对应,比如你的系统是XP,选择XP的驱动,如果是WIN7选择WIN7的驱动。