读《C陷阱和缺陷》(三)

以前一直不知道位运算中的&|、!~是什么情况,今天看了一下位运算,感觉好简单,前两者跟运算符&&||差不多,只不过位运算中操作是按二进制的方法操作的,比如1012他们的二进制为:10101100,进行&运算,每一位比较出来的结果为:1000,结果是8。进行|运算,每一位比较的结果是:1110,结果是14。不同是~运算符,我的理解是,把按位运算的数变成2进制,然后取反。取反后,根据情况将他们返回到二进制数,然后再变成十进制,这是计算机的操作方法。例如:7(二进制0000 0000 0000 0111----取反后(1111 1111 1111 1000)这是计算机的二进制补码形式存储在计算机中的,我们要找到他的反码,然后根据情况,得到二进制数,再化成十进制。则(1111 1111 1111 1000)一看是某个负数的补码,所以先取反码,再加一。取反后(1000 0000 000 0111,注意首位是符号位不能变),加一后(1000 0000 000 1000),结果为:-8。再来看看-7。首先写出二进制的-71000 0000 0000 0111)取反后(1111 1111 1111 1000),这时需要将这个反码+1,(1111 1111 1111 1001)变成补码,然后再取反变成原码(0000 0000 0000 0110),即是一个二级制数,再把它变成十进制为6,暂且这样理解。网上的资料比较多,介绍正负数的源码和补码,反码的问题很清楚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值