日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

居然不知道和的区别?

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 居然不知道和的区别? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

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

&和&&的區別

相同點

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

不同點

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

總結

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

位運算的使用

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

在掌握位運算之前,應該明確位運算的兩個概念。

  • Q1:什么樣的數據類型可以進行位運算?位運算的對象是int 、char 類型。幼兒園式說法就是對二進制的1101(13)進行運算
  • Q2:云運算的結果是什么?結果是整型
    常見的5個位運算符
符號意義運算對象類型運算結果類型示例
~邏輯非運算整型、char整型~a
&邏輯與運算a&b
|邏輯或運算a|b
<<位左移運算a<<2
>>位右移運算a>>2

01 位邏輯與運算:&

& 與運算是將兩個運算對象按位于進行與運算。規則是:

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的結果是4

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

02 位邏輯或運算:|

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

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

如15|20的結果計算結果就是31

0000 0000 0000 1111
0000 0000 0001 0100
結果:
0000 0000 0001 1111

03 位邏輯異或運算: ^

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

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

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

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

04.位邏輯左移運算<<

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

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

0000 0000 0000 1111
>> 左移8位的結果:
0000 1111 0000 0000
15<<8=3840

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

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

結論a左移n位就是相當于a乘2的n次方

05 位邏輯右移運算 >>

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

0000 1111(15)
左移3位結果是:
0000 0001(3)

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

06 位運算還能干嘛

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

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

?面試官:你們前后端分離的接口規范是什么??程序員:我終于知道post和get的區別?3萬字通俗易懂告訴你什么是.NET?什么是.NET Framework?什么是.NET Core?
?面試官:你連RESTful都不知道我怎么敢要你?
?這幾款谷歌插件還沒安裝??面試官:瀏覽器輸入 URL 回車之后發生了什么?


總結

以上是生活随笔為你收集整理的居然不知道和的区别?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。