位运算符,你真的懂了吗? |
您所在的位置:网站首页 › verilog逻辑运算符和位运算符 › 位运算符,你真的懂了吗? |
前言 大家好,我是Kuls。 有几天没写原创了,这几天分享了几篇我认为很不错的文章,但是阅读都不是很高。 是不是大家都准备过节了~ 在开始这篇文章之前,给大家推荐一下我的另一个公众号号:Kuls 这个号主打计算机基础、算法、Java。如果感兴趣可以关注一波! 好了,废话不多说,今天我们来讲讲那些老是忘记的玩意---位运算符。 位运算符我们首先来看看百度百科对于位运算符的定义 位操作是程序设计中对位模式按位或二进制数的一元和二元操作。 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。读起来可能会有点拗口,其实简单点说就是计算机对二进制进行计算的操作就是位操作。 这样说可能你会明白很多。 但是你也许会问一元和二元到底是个啥意思? 这里也给大家解释一下一元、二元、三元 首先,这里的元不是指的人民币,而是指操作数,当然你也可以理解为元素。 举个例子给大家说: - 1 负一这里的元素指的就是1,而前面的负号指的是运算符。 所以这里的负号”-“就是一元运算符,当然你也可以看下面的例子: 1 - 1 一减一这里我们可以看到有两个1,所以这里存在两个元素(操作数) 所以这里的 - 是二元运算符。 那么三元有啥呢? a>1 ? b : c相信经常写程序的朋友一定有过这种写法 这就是很经典的三元运算符。 上面给大家简单的介绍了一下一元、二元、三元,下面就来具体说说这些位运算符。 1、& & 与 我们可以称它为按位与。 怎么算? 将十进制化为二进制后,两个位同时为1则等于1,不等于为0 这里其实有个很好玩的例子,我们可以通过与运算来判断出某个数是否为偶数 if(0 == (a & 1)) { //偶数 }如果大家不太理解,你可以多写几个数的二进制,你就会发现这个规律,这里就不细说了。 2、| | 或 我们可以称它为按位或。 怎么算? 它跟与运算其实恰恰相反,两个位同时为0时才等于0,不等于为1 它的经典例子跟与运算其实差不多,也可以用来判断是否为奇偶。 当然我这里只是举例,而不是说只有这一个用处。 3、^ ^ 异或 这个其实更好理解。 它的规律是两个位如果是相同的则为0,不相同则为1。 也就是说,00为0,11也为0,01为1,10为1.... 这个算法题其实通过异或很容易解决,我们只需要把它们所有数全部异或就能够得出只出现一次的数。 总结为 a ^ b ^ b ^ c ^ c = a原理是什么呢? 我们会发现如果是相同的两个数进行异或,那么它的全部位会变成0。 4、~ ~ 取反 这个没啥好说的,1变成0,0变成1。 5、 我们会发现当舍弃的位上没有1时,移动的2位其实相当于乘以2^2=4 6、>> 右移顾名思义,跟左移是相反的。 如果向右移动一位,就相当于除以2 这里就不多举例子了,可以参照上面。 总结好了,今天的文章就到这,希望能够帮助到你。 我们下期见~ |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |