左移運(yùn)算探討求解
視頻8:55(左右)的時(shí)候,講師說 -14的高位包含1,不符合乘以2的規(guī)則,我認(rèn)為說錯(cuò)了,負(fù)數(shù)左移應(yīng)該以0為標(biāo)準(zhǔn),而-14左移兩位,舍棄的高位不包含0,所以乘2規(guī)則依然適用
這樣的理解有沒有錯(cuò)?
視頻8:55(左右)的時(shí)候,講師說 -14的高位包含1,不符合乘以2的規(guī)則,我認(rèn)為說錯(cuò)了,負(fù)數(shù)左移應(yīng)該以0為標(biāo)準(zhǔn),而-14左移兩位,舍棄的高位不包含0,所以乘2規(guī)則依然適用
這樣的理解有沒有錯(cuò)?
2016-10-12
舉報(bào)
2016-10-17
? ? ? 看來這位童鞋是強(qiáng)迫癥犯了。。。你只需要記住相對(duì)于二進(jìn)制數(shù)而言的,左移一位,相當(dāng)于最后一位加一個(gè)零,即將數(shù)擴(kuò)大2^1倍,左移n位,即加n個(gè)零,擴(kuò)大2^n次方,然而這僅限于無符號(hào)數(shù)的運(yùn)算,有符號(hào)數(shù)就要考慮高位溢出了。乘法運(yùn)算是一步一步乘(移位)出來的,每次取乘數(shù)的一位與被乘數(shù)操作,1則把被乘數(shù)照寫,0則為0,然后乘數(shù)右移。這樣循環(huán),最后把每一步結(jié)果加起來。所以左移位比乘法效率要高(具體參見<<計(jì)算機(jī)組成原理>>),你可以在java上寫個(gè)小程序看看兩者的運(yùn)算時(shí)間。
2016-10-23
無符號(hào)不用考慮吧,畢竟無符號(hào)進(jìn)一位,如1000進(jìn)一位會(huì)變成0001 0000,而有符號(hào)的則并不是這樣子的吧,如1001進(jìn)一位,會(huì)變成00010010,一個(gè)是有小變大了,一個(gè)是不僅變大了,還把符號(hào)給改了
2016-10-13
你錯(cuò)了,不符合乘2規(guī)則,會(huì)有溢出!