正负数原码、反码、补码以及位运算
正数:原码、反码和补码都是其⼆进制数。
负数:
原码是将其相反数的原码的符号位(最⾼位)变为1。如5的原码为0000 0101,-5的原码为1000 0101;
反码是将其原码除了符号位外,每⼀位取反,-5的反码为1111 1010;
补码是将其反码加1,-5的补码为1111 1011。
位运算
1.按位与 &
双⽬运算,按⼆进制 & 运算。只有两位都为1的情况结果才为1,其它情况为0。0&0=0; 0&1=0; 1&0=0; 1&1=1。
负数二进制补码运算法则应⽤:
清零:将⼀个数与0(各位都为0)相与,可将这个数置零。
取指定位:为求X的指定位,将其与对应位为1、其余位为0的数相与,可得到X的指定位。
如设X=1010 1110,
取X的低4位,⽤ X & 0000 1111 = 0000 1110 即可得到;
还可⽤来取X的2、4、6位。
2.按位或 |
双⽬运算,按⼆进制 | 运算。只要有⼀位为1,结果都为1,只有两位为0的情况才为0。0|0=0; 0|1=1; 1|0=1; 1|1=1。
⽤来对X指定位置置1:确定X要置1的位置,将X与以这些位置为1、其余为0的数相或,可使X的指定位置1。
如设将 X=10100000的低4位置1 ,⽤ X | 0000 1111 = 1010 1111即可得到。
3.异或 ^
双⽬运算,按⼆进制 ^ 运算。两位相异为1,相同为0。0^0=0; 0^1=1; 1^0=1; 1^1=0。
应⽤:
使X的指定位翻转:确定X要翻转的位置,将X与以这些位置为1、其余为0的数异或,可使X指定位翻转。
如设 X=10101110,使X低4位翻转,⽤X ^ 0000 1111 = 1010 0001即可得到。
与0相异或,保留原值。
4.取反 ~
单⽬运算,按⼆进制 ~ 运算。~1=0; ~0=1。
⽤来使⼀个数的最低位为零,可以表⽰为:a&~1。
~1的值为1111111111111110,再按“与”运算,最低位⼀定为0。
取反运算符的优先级⽐算术运算符、关系运算符、逻辑运算符和其他运算符的都⾼。
5.左移 <<
单⽬运算。
将⼀个运算对象的各⼆进制位全部左移若⼲位(左边的⼆进制位丢弃,右边补0)。若左移时舍弃的⾼位不包含1,则每左移⼀位,相当于该数乘以2。
a = a << k 将a的⼆进制位左移k位,右补0,a = a * (2的k次⽅)。
6.右移 >>
单⽬运算。
将⼀个数的各⼆进制位全部右移若⼲位,正数左补0,负数左补1,右边丢弃。操作数每右移⼀位,相当于该数除以2。
a = a >> k 将a的⼆进制位右移k位,正数则左补0,负数则左补1,a=a/(a的k次⽅)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论