久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C#&和&&的區(qū)別

 dotNet全棧開發(fā) 2020-02-06

前言

那年剛找工作那會,就碰到過這么一個簡單的題目
“&和&&的區(qū)別” 那時知識面窄,,大概也就知道1.都是作為邏輯與的運算符,。2.&&具有短路功能,計算出前者false,,就不需計算后者的true or false,。后來在微信群里看到有人問類似的問題,引發(fā)了我的思考。

&和&&的區(qū)別

相同點

&和&&都可作邏輯與的運算符,,表示邏輯與(and),,當(dāng)運算符兩邊的表達式的結(jié)果都為true時,其結(jié)果才為true,,否則,,只要有一方為false,則結(jié)果為false,。(ps:當(dāng)要用到邏輯與的時候&是毫無意義,,&本身就不是干這個的)

不同點

if(loginUser!=null&&string.IsnullOrEmpty(loginUser.UserName))
  • &&具有短路的功能,即如果第一個表達式為false,,則不再計算第二個表達式,,對于上面的表達式,當(dāng)loginUser為null時,,后面的表達式不會執(zhí)行,,所以不會出現(xiàn)NullPointerException如果將&&改為&,則會拋出NullPointerException異常,。(ps:所以說當(dāng)要用到邏輯與的時候&是毫無意義的)
  • & 是用作位運算的,。

總結(jié)

  • &是位運算,返回結(jié)果是int類型
  • &&是邏輯運算,,返回結(jié)果是bool類型 what are doing?
    讀者黑人問號:我工作三年,,你就告訴這點東西,,這不是浪費我點擊來閱讀的流量費,?

位運算的使用

直接進入主題位運算,這篇文章本身沒有任何難度,,工作中甚至用不到位運算,,埋個伏筆:
“最高效求出2的3次方"

在掌握位運算之前,應(yīng)該明確位運算的兩個概念,。

  • Q1:什么樣的數(shù)據(jù)類型可以進行位運算,?位運算的對象是int 、char 類型,。幼兒園式說法就是對二進制的1101(13)進行運算
  • Q2:云運算的結(jié)果是什么,?結(jié)果是整型

    常見的5個位運算符
符號意義運算對象類型運算結(jié)果類型示例
~邏輯非運算整型、char整型~a
&邏輯與運算a&b
|邏輯或運算a|b
<<位左移運算a<<2
>>位右移運算a>>2

01 位邏輯與運算:&

& 與運算是將兩個運算對象按位于進行與運算,。規(guī)則是:

1&1=1
0&1=0
0&0=0

如圖:15的二進制是(ps:16位int,,32位int多打16個0浪費流量)

0000 0000 0000 1111

20的二進制是

0000 0000 0001 0100

15&20的結(jié)果是4

0000 0000 0000 1111
0000 0000 0001 0100
結(jié)果:
0000 0000 0000 0100在這里插入圖片描述

02 位邏輯或運算:|

|位邏輯或運算是將兩個運算對象按位進行或運算,運算的規(guī)則是

1|1=1
1|0=1
0|0=0
兩位對比有一個1即為1

如15|20的結(jié)果計算結(jié)果就是31

0000 0000 0000 1111
0000 0000 0001 0100
結(jié)果:
0000 0000 0001 1111

03 位邏輯異或運算: ^

^位邏輯異或運算 是將兩個運算對象按位進行異或運算,,規(guī)則是:

1異或1等于0
1異或0等于1
0異或0等于0

即:相同得0,,相異得1。15^20= 27(0001 1011)

0000 1111(15)
0001 0100(20)
^運算后的結(jié)果
0001 1011(27)

04.位邏輯左移運算<<

<<位邏輯左移運算是將按位向左邊移動若干位,左移后空出的部分為0,。

比如15的二進制0000 1111 左移8位就是1111 0000 0000

0000 0000 0000 1111
>> 左移8位的結(jié)果:
0000 1111 0000 0000
15<<8=3840

左移3位(15<<3)就是0111 1000結(jié)果是120

a<<1 =2
a<<2 =4
a<<3 =8

結(jié)論a左移n位就是相當(dāng)于a乘2的n次方

05 位邏輯右移運算 >>

位邏輯右移運算是將按位向右邊移動若干位,,右移后空出的部分為0 比如 0000 1111(15)左移3位(15<<3)就是0000 0001(1)

0000 111115
左移3位結(jié)果是:
0000 00013

右移相當(dāng)于整除,右移1位相當(dāng)于除以2的1次方,,右移2相當(dāng)于除以2的2次方,。(ps:這個除法是計算機的除法,你懂得)

06 位運算還能干嘛

位運算的騷操作其實挺多的,,篇幅不夠,,所以留著下一篇寫。例如:

  • 如將一個月的簽到記錄保存到1個int類型中
  • 判斷奇偶數(shù)
  • 權(quán)限設(shè)置,,增刪改查4個操作,,合并成一個整型
  • 交換兩個數(shù)
  • 計算2的3次方最高效就是用位運算左移<<
  • 計算a的b次方
  • 一組整型數(shù)據(jù),找出沒有重復(fù)的數(shù)

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多