标签:二进制 转换 amp 相同 逻辑取反 补码 进制 逻辑 不同
1、布尔运算符
共三个
not
逻辑取反 eg:not 1 return false
and
优先返回假值的对象 eg:1 and 0 return 0 12 and 100 return 12
or
优先返回真值对象 eg:1 or 2 return 1 0 or 20 return20
2、位运算
& | ^ << >> ~
&:位与运算
输入相同值则返回相同值,不同则返回0
eg:7 & 7 return 7 8 & 9 return 0
|:位或运算
输入有真值则返回真值,输入两个假值则返回0
eg:2 | 3 return 2 0 | 0 return 0
^:位异或
相同为0,不同为1
eg:2 ^ 3 return 1 2 ^ 2 return 0
<<:左移
将数化为二进制数后向左移位,低位则补0
x << y 即将x化为二进制数后向左移y位
eg:2 << 3 return 16
>>:右移
将数化为二进制数后向右移位,低位则丢弃
x >>y 即将x化为二进制数后向右移y位
eg:2 >> 1 return 1
~:按位取反
了解按位取反之前需要知道一下知识点
(1)取反操作是在原码上进行的!
(2)在计算机里面,数是以补码存储的,但是转换成其他进制需原码
(3)原码求补码:取反,+1
(4)补码求原码:取反,+1
(5)正数的补码即源码,负数的补码则为其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1
当输入为正数时,求其补码(即其原码),再取反,再求原码,即可得到取反后的数(符号带上)
eg:~5
5的补码为0000 0101 取反得1111 1010,可见取反后数为一个负数(二进制最高位表示符号,1为负,0为正),然后求其原码得0000 0110,再转换成十进制得数为-6
当输入为负数时,求其补码(即该数的正数取反后+1),再取反,再求源码,即可得到取反后的数(符号带上)
eg:~-6
-6的补码为6的原码取反后+1,6原码为0000 0110,取反+1后得-6补码为1111 1010,再取反得0000 0101,可见起取反后是一个正数,然后求其原码得0000 0101,再转换成十进制得数5
标签:二进制 转换 amp 相同 逻辑取反 补码 进制 逻辑 不同
原文地址:https://www.cnblogs.com/shiqyka/p/8994948.html