C语言中,按位与,左右移等操作符计算方法。

原码,补码,反码!

整数二进制保存方法:源码,补码,反码

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;

到此结束,编者能力有限,感谢观看!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值