今天我们来聊一聊c语言的位操作符,老规矩,觉得猪猪讲的不错的还请一键三连,毕竟猪猪码字不易,如果有错误的地方,还请大家位于评论区斧正,感谢大家的支持!
【一】位的基本概念
要知道我们存储的数据都是以二进制的形式在计算机的内存中存贮,就算是字符也是化为了ASCII码在计算机中的存储,我们通常只能根据类型的大小去访问相应的空间大小。但是有些泯灭人性的公司在搞面试题的时候就喜欢搞这个位的概念。正数的源码,反码,补码都是相同的,最高位是符号位,最高位为0则是正数,若是1则表示这个数十负数。而负数就不一样了,源反补码是不相同的。
负数反码等于负数的符号位不变其他位按位取反,补码就是反码加一,不管是正数还是负数在计算机中存放的都是反码。
【二】&,|,^
&这个符号就是按位且,计算机语言中0代表假,非0代表真,在二进制中,也就是有0既0,全1才为1。
|这个符号就是按位或,同理0代表假,非零代表真,在二进制中,全0才为0,有1就为1。
^这个符号就是按位异或,在二进制中,两个二进制位相同就为1,不同就为0。
这些概念都是非常简单的,只是你不会或者说找不到机会去运用这才是一个问题。
【三】位操作符的运用
一下所有题目,猪猪只给你们提供简单的思路,实现还是需要靠你们去vs上自己动手,毕竟不能做一个伸手党对吧?
1.求一个数中的二进制中有多少个1或者0?
这道题其实还是比较简单的,因为你直接将这个数字&1就可,如果为1则表示最后一位为1,反之就为0,因为1的二进制前面的数都是0,和0&得到的结果必定是0,但是最后一位是1啊,和1&就是1,和0&就是0,然后将这个数字右移一位就行,这是非常简单的
2.一个数组中有的数字出现了两次,但是只有一个数字出现了一次,让我们去找到这个出现了一次的数据,这道题其实是非常简单的,直接所有的数互相^就可,因为相同的数字^之后就为0,但是0和任何数字^都是原本的数字,所以直接所有的数字按位与,你得出的结果就是那个出现了一次的数据。
以上就是猪猪对所有的位操作符的理解,如果觉得猪猪称述还算不错的话,还请于评论区一键三连,如果猪猪称述的有啥问题的话,还请于评论区斧正。



