第三步:得到最后的结果
左移之后,得到的新的二进制数,是补码,对补码-1,并按位取反,得到的是数的原码,在经过进制转换得到最后的结果。
值得注意的是:将a变量存放的二进制数改变之后,将改变后的二进制数存到哪个变量,哪个变量的值就会是这个结果,如果不将结果存到a变量里面,是不会改变a变量的值的。;
右移操作符:
右移操作符的意思是将内存中存放的二进制数,向右移一位二进制数,移出的那一位二进制数被丢弃,此时一个比特位的空间会空出来,补上原符号位的二进制数。
假如 int a = 4;a>>1;,求最后的结果
第一步:求出a变量的二进制数
求出的二进制数必须是32位,必须是整数的补码
为什么是
&,| 和 &&
按位与的意思是:对二进制位上的二进制数进行与运算。
假如a和b是整型变量
求a&b的运算结果时:
第一步:分别求出两个变量中的32位二进制数
求得的二进制数必须是32位,并且是整数的补码。
为什么是求得的二进制数是32位?
a和b是整型变量,向内存申请四个字节的空间,一个字节=8个比特位,一个比特位存放一位二进制数,所以一个整型变量占用32个比特位,存放32位二进制数。
为什么求得的二进制数是整数的补码?
a和b是整型变量,向里面存放的是整数,整数向里面存放时,存放的是它的补码。
第二步:对求出的二进制数进行与运算
求得两组二进制数,进行与运算时,是分别对两组数的对应的二进制位上的二进制数进行与运算,这对应位置上的二进制数可以看作一对,一对中如果有0,则运算结果为0,一对中如果都是1,则运算结果为1。
第三步:求出最后结果
与运算之后,得到的一组新的二进制数是结果的补码,对补码-1和按位减一得到最后的原码,最后进行进制转换,就会得到最后的结果。
按位或的意思是:对二进制位上的二进制数进行或运算
假如a和b是整型变量
求a | b的运算结果
第一步:求出两个变量中存放的二进制数
二进制数必须是32位,并且是整数的补码
为什么求出的二进制数必须是32位?
a和b是整型变量,向内存中申请了四个字节的空间,一个字节=8个比特位,一个比特位存放一位二进制数,所以一个整型变量占用32个比特位,存放32位二进制数。
为什么求出的二进制数必须是整数的补码?
a和b都是整型变量,向里面存放的是整数,整数在存放时,存放的是它的补码。
第二步:进行或运算
对求得两组二进制数,进行或运算时,是对两组数的对应的二进制位上的二进制数进行或运算,这对应位置上的二进制数可以看作一对,一对中如果有1,则运算结果为1,一对中如果都是0,则运算结果为0。
第三步:求出最后结果
或运算之后,得到的一组新的二进制数是结果的补码,对补码-1和按位取反,得到最后的原码,最后进行进制转换,就会得到最后的结果。
按位异或的意思是:对二进制位上的二进制数进行异或运算
第一步:求出两个变量中的二进制数
求出的二进制数必须是32位的,并且是整数的补码
为什么求出的二进制数必须是32位?
a和b是整型变量,向内存申请四个字节的空间,一个字节=8个比特位,一个比特位存放一位二进制数,则一个整型变量申请了32个比特位,存放32位二进制数。
为什么求出的二进制数必须是整数的补码
a和b是整型变量,向里面存放的是整数,整数存放的时候,将它的补码存放进去。
第二步:对求出的两组二进制数进行异或运算
求得两组二进制数,进行异或运算时,是对两组数的对应二进制位上的二进制数进行异或运算,这对应位置上的二进制数可以看作一对,一对中如果数字相同则运算结果为0,不同则运算结果为1。
第三步:求出最后结果
异或运算之后,得到的一组新的二进制数是结果的补码,对补码-1和按位取反,得到最后的原码,最后进行进制转换,就会得到最后的结果。
ps:二进制位是计算机中数据存储的最小单位,用来表示0或者1;二进制数是由n个0或者1组成的。



