原码,补码,反码!
整数二进制保存方法:源码,补码,反码
0,正 1负
正数:源码=反码=补码,如下图。
为1的补码反码原码。
负数:源码-反码,除了第一位,其余位取反-补码 反码+1,因此,源码-补码-取反加一。
正数和负数的加减用的是二进制是补码进行加减,输出的为原码,也就是你最后以原码的形式进行打印,因此想计算结果时,算出补码再给它取反加一才能得到输出的值。
补码-源码—取反加一。
对于整形来说:数据存放内存中其实存放的是补码。为什么呢?
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
左移右移操作符
移位操作符<<左移操作符,>>右移操作符
注:移位操作符的操作数只能是整数。
左移:向左边移动一位,最后一位补0.
10的二进制为00000000000000000000000000001010左移的话变成
00000000000000000000000000010100,则2的四次方加2的平方等于20,则为20.
右移:分两种
逻辑右移:左边用0填充,右边丢弃。
算术右移:左边用原该值的符号位填充,右边丢弃。(大多数编译器为算数右移)
操作符均以二进制的补码进行操作!,操作完答案均为补码!以源码进行输出,记得取反加一!!
至于为什么是5,请看下图。
如果为负数,则在消失的左位补一个1.
操作符:
1 & 按位与
按(2进制)位与
计算规则:对应的二进制位进行与运算只要有0就是0,两个同时为1才是1。
例如下图:举例,-5&3
2 | 按位或
按(2进制)位或
计算规则:对应的二进制位进行或运算只要有1就是1,两个同时为0才是0
例子,3|-5;
可以与上面的&一起记忆,两个互补。
3^ 按位异或
两个数之间例如3^5,用其补码就行异或操作。
对应的二进制位进行异或运算相同为0相异为1.
要记得,相依唯一
温馨提示,2^2=0,剩下请发挥你们的奇思妙想吧!
4 ~ 按位取反
补码的全部位置取反得到补码,然后取反加一得到源码输出。
举例,~1;
到此结束,编者能力有限,感谢观看!