計(jì)算機(jī)單位轉(zhuǎn)換 && 位運(yùn)算 && 進(jìn)制轉(zhuǎn)換

一霎冯、單位轉(zhuǎn)換

在計(jì)算機(jī)科學(xué)中,bit是表示信息的最小單位钞瀑,叫做二進(jìn)制位沈撞;一般用0和1表示。
Byte叫做字節(jié)雕什,由8個(gè)位(8bit)組成一個(gè)字節(jié)(1Byte)缠俺,用于表示計(jì)算機(jī)中的一個(gè)字符

1T  = 1024G 
1G  = 1024M 
1M  = 1024KB 
1KB = 1024B
1B  = 1Byte = 8 bit 

【疑問(wèn)】電腦硬盤500G,打開(kāi)卻只有480G 贷岸?壹士?

  • G、M偿警、K之間的進(jìn)制是1024躏救,這是由于2進(jìn)制的原因而定義的。而在IT產(chǎn)品行業(yè)多數(shù)是按1000進(jìn)制計(jì)算螟蒸,即1GB=1000MB盒使,這就是我們常看到的硬盤格式化以后為什么縮水了的原因七嫌,且硬盤越大差別越大少办。因?yàn)閺S家是按1GB=1000MB計(jì)算的硬盤容量,而格式化時(shí)系統(tǒng)是按1GB=1024MB計(jì)量的诵原。

帶寬與網(wǎng)速

網(wǎng)速單位換算

在計(jì)算機(jī)網(wǎng)絡(luò)或者是網(wǎng)絡(luò)運(yùn)營(yíng)商中英妓,一般,寬帶速率的單位用bps(或b/s)表示皮假;bps表示比特每秒即表示每秒鐘傳輸多少位信息鞋拟,是bit per second的縮寫。在實(shí)際所說(shuō)的1M帶寬的意思是1Mbps(是兆比特每秒Mbps不是兆字節(jié)每秒MBps)惹资。

  • 線路單位是bps,表示bit(比特)/second(秒)
  • 用戶在網(wǎng)上下載時(shí)顯示的速率單位往往是Byte(字節(jié))/s(秒)航闺,注意是大寫字母B
帶寬16Mbps = 16/8MBps = 2MBps (理論下載速度)

二褪测、位運(yùn)算基本概念

知乎-在寫代碼的過(guò)程中使用位運(yùn)算的好處猴誊?
九章 - 干貨!史上最強(qiáng)位運(yùn)算面試題大總結(jié)侮措!
九章 - 位運(yùn)算入門教程

2.1懈叹、左移操作 a << b

將A的二進(jìn)制表示的每一位向左移B位,左邊超出的位截掉分扎,右邊不足的位補(bǔ)0

A = 1100  B = 2
A << B = 110000

2.2澄成、右移操作 A >> B , A >>> B

右移操作分為 算數(shù)右移邏輯右移

區(qū)別:算術(shù)右移是帶符號(hào)的右移,邏輯右移是不帶符號(hào)的右移畏吓。
算術(shù)右移:將A的二進(jìn)制表示的每一位向右移B位墨状,右邊超出的位截掉,左邊不足的位補(bǔ)符號(hào)位的數(shù)菲饼。
邏輯右移:將A的二進(jìn)制表示的每一位向右移B位肾砂,右邊超出的位截掉家夺,左邊不足的位補(bǔ)0杨名。
C語(yǔ)言:只有邏輯右移 A >> B

JAVA 和 Python中:算術(shù)右移 A >> B , 邏輯右移 A >>> B
A = 11111111111111111111111110000001
B = 2
A >> B = 11111111111111111111111111100000
A >>> B = 00111111111111111111111111100000

2.3轧粟、按位與操作 a & b

將A和B的二進(jìn)制表示的每一位進(jìn)行與操作景埃,只有兩個(gè)對(duì)應(yīng)的二進(jìn)制位都為1時(shí)矩乐,結(jié)果位才為1痹束,否則為0.

A = 001010
B = 101100
A & B = 001000

2.4雄坪、按位或操作 a | b

將A和B的二進(jìn)制表示的每一位進(jìn)行或操作驱犹,只要兩個(gè)對(duì)應(yīng)的二進(jìn)制位有一個(gè)為1砖瞧,結(jié)果位就為1臼氨,否則為0.

A = 001010
B = 101100
A | B = 101110

2.5、按位非操作 ~ a

將A的二進(jìn)制表示每一位進(jìn)行取反操作芭届,如果對(duì)應(yīng)的二進(jìn)制位為0储矩,結(jié)果位為1,否則為0.

A = 00000000000000000000000000001010
~A = 11111111111111111111111111110101

2.6褂乍、按位異或操作 a ^ b

將A和B的二進(jìn)制表示的每一位進(jìn)行異或操作持隧,如果對(duì)應(yīng)的二進(jìn)制位不同,結(jié)果位為1逃片,否則為0.

A = 001010
B = 101100
A ^ B = 100110

三屡拨、位運(yùn)算應(yīng)用總結(jié)

清零取反要用與,某位置一可用或

若要取反和交換褥实,輕輕松松用異或

前提 :源操作數(shù)s 掩碼mask

3.1呀狼、按位與 &
  • 清零特定位 (mask中特定位置0,其它位為1损离,s=s&mask)
s = 1010     第二位清0

8 = 10 & 13
1000  =  1010 & 1101
  • 取某數(shù)中指定位 (mask中特定位置1哥艇,其它位為0,s=s&mask)
s = 1010     取第二位 和 第三位

2 = 10 & 2
0010 = 1010 & 0010        // 同為1時(shí)僻澎,則為1貌踏。故此第二位為1

0 = 10 & 4
0000 = 1010 & 0100         // 同上十饥。故此第三位為0
3.2、按位或 |
  • 常用來(lái)將源操作數(shù)某些位置1祖乳,其它位不變逗堵。 (mask中特定位置1,其它位為0 s=s|mask)
s = 1010      將第三位置為1

14 = 10 | 4
1110 = 1010 | 0100      // 只有一個(gè)為1眷昆,就為1
3.3蜒秤、位異或 ^
  • 使特定位的值取反 (mask中特定位置1,其它位為0 s=s^mask)
s = 1010      將第二位取反

8 = 10 ^ 2
1000 = 1010 ^ 0010      // 不同為1 亚斋,相同為0
  • 不引入第三變量作媚,交換兩個(gè)變量的值 (設(shè) a=a1,b=b1)
int a=10,b=12;   
a=a^b; 
b=a^b; 
a=a^b;  

a = 1010      b=1100
a = a ^ b = 1010 ^ 1100;       // a = 0110
b = a ^ b = 0110 ^ 1100;       // b = 1010
a = a ^ b = 0110 ^ 1010;       // a = 1100

此算法能夠?qū)崿F(xiàn)是由異或運(yùn)算的特點(diǎn)決定的,通過(guò)異或運(yùn)算能夠使數(shù)據(jù)中的某些位翻轉(zhuǎn)伞访,其他位不變掂骏。這就意味著 任意一個(gè)數(shù)與任意一個(gè)給定的值連續(xù)異或兩次,值不變厚掷。

二進(jìn)制補(bǔ)碼運(yùn)算公式

-x = ~x + 1 = ~(x-1) 
~x = -x-1 
-(~x) = x+1 
~(-x) = x-1 
x+y = x - ~y - 1 = (x|y)+(x&y) 
x-y = x + ~y + 1 = (x|~y)-(~x&y) 
x^y = (x|y)-(x&y) 
x|y = (x&~y)+y 
x&y = (~x|y)-~x 
x==y:    ~(x-y|y-x) 
x!=y:    x-y|y-x 
x < y:    (x-y)^((x^y)&((x-y)^x)) 
x <=y:    (x|~y)&((x^y)|~(y-x)) 
x < y:    (~x&y)|((~x|y)&(x-y))//無(wú)符號(hào)x,y比較 
x <=y:    (~x|y)&((x^y)|~(y-x))//無(wú)符號(hào)x,y比較 

四弟灼、位運(yùn)算實(shí)戰(zhàn)

優(yōu)秀程序員不得不知道的20個(gè)位運(yùn)算技巧

  • 電腦大小端
public static byte[] intToByteArray(int a)
{
    byte[] ret = new byte[4];
    ret[3] = (byte) (a & 0xFF);   
    ret[2] = (byte) ((a >> 8) & 0xFF);   
    ret[1] = (byte) ((a >> 16) & 0xFF);   
    ret[0] = (byte) ((a >> 24) & 0xFF);
    return ret;
}
假設(shè)有兩個(gè)數(shù)掩驱,A和B。B為2^n冬竟,期中n>=0欧穴,A>=0。則:
要求A * B的話泵殴,則可使用<<操作符涮帘,A << n。
要求A / B的話笑诅,則可使用>>操作符调缨,A >> n。
要求A % B的話吆你,則可使用&操作符弦叶,A&(B-1)。

如果A為負(fù)數(shù)的話妇多,則未必成立伤哺。比如,當(dāng)A為-1砌梆,B為2的時(shí)候默责,可知(-1)%2=-1贬循,而-(1)&0=0咸包。
記住桃序,當(dāng)我們把乘法,除法及取模運(yùn)算轉(zhuǎn)化為位運(yùn)算時(shí)烂瘫,都要求A>=0媒熊。

五、進(jìn)制轉(zhuǎn)換

5.1坟比、二進(jìn)制 與 八進(jìn)制

二進(jìn)制 轉(zhuǎn) 八進(jìn)制
八進(jìn)制 轉(zhuǎn) 二進(jìn)制

5.2芦鳍、二進(jìn)制 與 十六進(jìn)制

二進(jìn)制 轉(zhuǎn) 十六進(jìn)制
十六進(jìn)制 轉(zhuǎn) 二進(jìn)制

5.3、十進(jìn)制 與 八進(jìn)制葛账、十六進(jìn)制

十進(jìn)制 轉(zhuǎn) 八進(jìn)制柠衅、十六進(jìn)制
八進(jìn)制、十六進(jìn)制 轉(zhuǎn) 十進(jìn)制
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末籍琳,一起剝皮案震驚了整個(gè)濱河市菲宴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趋急,老刑警劉巖喝峦,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異呜达,居然都是意外死亡谣蠢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門查近,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)眉踱,“玉大人,你說(shuō)我怎么就攤上這事霜威√冈” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵侥祭,是天一觀的道長(zhǎng)叁执。 經(jīng)常有香客問(wèn)我,道長(zhǎng)矮冬,這世上最難降的妖魔是什么谈宛? 我笑而不...
    開(kāi)封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮胎署,結(jié)果婚禮上吆录,老公的妹妹穿的比我還像新娘。我一直安慰自己琼牧,他們只是感情好恢筝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布哀卫。 她就那樣靜靜地躺著,像睡著了一般撬槽。 火紅的嫁衣襯著肌膚如雪此改。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天侄柔,我揣著相機(jī)與錄音共啃,去河邊找鬼。 笑死暂题,一個(gè)胖子當(dāng)著我的面吹牛移剪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薪者,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纵苛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了言津?” 一聲冷哼從身側(cè)響起攻人,我...
    開(kāi)封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纺念,沒(méi)想到半個(gè)月后贝椿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陷谱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烙博,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烟逊。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渣窜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宪躯,到底是詐尸還是另有隱情乔宿,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布访雪,位于F島的核電站详瑞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏臣缀。R本人自食惡果不足惜坝橡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望精置。 院中可真熱鬧计寇,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蝶押,卻和暖如春踱蠢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背播聪。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工朽基, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留布隔,地道東北人离陶。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像衅檀,于是被迫代替她去往敵國(guó)和親招刨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容