在C中,如下6个运算符是按位运算符(在位级别工做)web
C或C ++中的&(按位与)将两个数字做为操做数,并对两个数字的每一位进行“与”运算。仅当两个位均为1时,AND的结果才为1。面试
该| 在C或C ++中(按位或)将两个数字做为操做数,并对两个数字的每一位进行“或”运算。若是两个位中的任何一位为1,则OR的结果为1。编程
C或C ++中的^(按位异或)将两个数字用做操做数,并对两个数字的每一位进行异或。若是两个位不一样,则异或的结果为1。微信
在C或C ++中,<<(左移)采用两个数字,左移第一个操做数的位,第二个操做数肯定要移位的位数。app
C或C ++中的>>(右移)采用两个数字,右移第一个操做数的位,第二个操做数肯定要移位的位数。学习
C或C ++中的〜(按位非)取一个数字并将其全部位求反spa
代码举例:orm
输出:视频
a = 5,b = 9blog
a&b = 1
a | b = 13
a ^ b = 12
〜a = 250
b << 1 = 18
b >> 1 = 4
关于按位运算符的有趣事实
(1)左移位运算符和右移位运算符不该用于负数。若是任何一个操做数为负数,则会致使未定义的行为。例如,-1 << 1和1 << -1的结果均未定义。另外,若是数字移位的幅度大于整数的大小,则行为是不肯定的。例如,若是整数使用32位存储,则1 << 33是未定义的。
(2)从技术面试的角度来看,按位异或运算符是最有用的运算符。 它用于许多问题。一个简单的例子就是“给出一组数字,其中全部元素除一个数字外均出现偶数次,找到奇数出现的数字”。只需对全部数字进行异或运算,就能够有效地解决此问题。
输出:出现奇数的元素是90
(3)不该使用按位运算符代替逻辑运算符。逻辑运算符(&&,||和!)的结果为0或1,但按位运算符返回整数值。另外,逻辑运算符会将任何非零操做数都视为1。例如,考虑如下程序,对于相同的操做数,&和&&的结果是不一样的。
(4)左移和右移运算符分别等于乘和除以2。如第1点所述,它仅在数字为正数时起做用。
输出:x << 1 = 38x >> 1 = 9
(5)&运算符可用于快速检查数字是否为奇数或偶数。仅当x为奇数时,表达式(x&1)的值才为非零,不然值为零。
(6)〜运算符应当心使用。若是结果的〜运算符存储在一个无符号变量中,那么它的结果多是一个大数。若是结果存储在有符号变量中,则结果多是负数(假设负数以2的补码形式存储,其中最左边的位是符号位)
但愿对你们有帮助!
另外若是你想更好的提高你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许能够帮到你~
C语言C++编程学习交流圈子,QQ群464501141【点击进入】微信公众号:C语言编程学习基地
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!
编程学习书籍分享:
编程学习视频分享:
在C中,如下6个运算符是按位运算符(在位级别工做)
C或C ++中的&(按位与)将两个数字做为操做数,并对两个数字的每一位进行“与”运算。仅当两个位均为1时,AND的结果才为1。
该| 在C或C ++中(按位或)将两个数字做为操做数,并对两个数字的每一位进行“或”运算。若是两个位中的任何一位为1,则OR的结果为1。
C或C ++中的^(按位异或)将两个数字用做操做数,并对两个数字的每一位进行异或。若是两个位不一样,则异或的结果为1。
在C或C ++中,<<(左移)采用两个数字,左移第一个操做数的位,第二个操做数肯定要移位的位数。
C或C ++中的>>(右移)采用两个数字,右移第一个操做数的位,第二个操做数肯定要移位的位数。
C或C ++中的〜(按位非)取一个数字并将其全部位求反
代码举例:
输出:
a = 5,b = 9
a&b = 1
a | b = 13
a ^ b = 12
〜a = 250
b << 1 = 18
b >> 1 = 4
关于按位运算符的有趣事实
(1)左移位运算符和右移位运算符不该用于负数。若是任何一个操做数为负数,则会致使未定义的行为。例如,-1 << 1和1 << -1的结果均未定义。另外,若是数字移位的幅度大于整数的大小,则行为是不肯定的。例如,若是整数使用32位存储,则1 << 33是未定义的。
(2)从技术面试的角度来看,按位异或运算符是最有用的运算符。 它用于许多问题。一个简单的例子就是“给出一组数字,其中全部元素除一个数字外均出现偶数次,找到奇数出现的数字”。只需对全部数字进行异或运算,就能够有效地解决此问题。
输出:出现奇数的元素是90
(3)不该使用按位运算符代替逻辑运算符。逻辑运算符(&&,||和!)的结果为0或1,但按位运算符返回整数值。另外,逻辑运算符会将任何非零操做数都视为1。例如,考虑如下程序,对于相同的操做数,&和&&的结果是不一样的。
(4)左移和右移运算符分别等于乘和除以2。如第1点所述,它仅在数字为正数时起做用。
输出:x << 1 = 38x >> 1 = 9
(5)&运算符可用于快速检查数字是否为奇数或偶数。仅当x为奇数时,表达式(x&1)的值才为非零,不然值为零。
(6)〜运算符应当心使用。若是结果的〜运算符存储在一个无符号变量中,那么它的结果多是一个大数。若是结果存储在有符号变量中,则结果多是负数(假设负数以2的补码形式存储,其中最左边的位是符号位)
但愿对你们有帮助!
另外若是你想更好的提高你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许能够帮到你~
C语言C++编程学习交流圈子,【点击进入】微信公众号:C语言编程学习基地
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!
编程学习书籍分享:
编程学习视频分享: