欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)特定位取反原理及示例

 更新時(shí)間:2014年06月30日 09:02:27   投稿:whsnow  
循環(huán)輸入每組兩個(gè)數(shù)hex和n(0<=n<31),hex是一個(gè)16進(jìn)制的數(shù)字,我們要做的是將hex的第n位取反,然后以16進(jìn)制的形式輸出對(duì)應(yīng)的結(jié)果

去華為面試的時(shí)候,沒(méi)有做好準(zhǔn)備工作;面試的流程沒(méi)有問(wèn)清也沒(méi)有查,結(jié)果一過(guò)去就讓上機(jī)做題,著實(shí)有點(diǎn)措手不及。筆者是擅長(zhǎng)前端的Java Web工程師啊,基本的底層編程知識(shí)早已生疏了。機(jī)試題碰到了這道位運(yùn)算的題目,按理說(shuō)是非常簡(jiǎn)單的,原理筆者也很清楚,但是由于實(shí)在是好多年沒(méi)有搞過(guò)位運(yùn)算了,Java位運(yùn)算更是沒(méi)有操作過(guò),所以結(jié)果實(shí)在是不體面……

機(jī)試時(shí)間規(guī)定是一個(gè)小時(shí),語(yǔ)言可選C或Java還有個(gè)什么腳本語(yǔ)言,筆者花了將近三個(gè)小時(shí),才用Java勉強(qiáng)把題做出來(lái)了,慚愧慚愧……回來(lái)就用JS重新實(shí)現(xiàn)了一個(gè)簡(jiǎn)單版本,今天整理貼出來(lái)。

題目是:循環(huán)輸入每組兩個(gè)數(shù)hex和n(0<=n<31),hex是一個(gè)16進(jìn)制的數(shù)字,我們要做的是將hex的第n位取反,然后以16進(jìn)制的形式輸出對(duì)應(yīng)的結(jié)果。

筆者折騰兩個(gè)多小時(shí)的過(guò)程就不再贅述了,這里給出js的實(shí)現(xiàn),很簡(jiǎn)單的位操作基礎(chǔ)知識(shí)。原理啰嗦一句,就是把1按比特位左移n位,然后跟原數(shù)異或就行了:

function bitOper(hex, n){ 
var num = parseInt(hex); 
num ^= (1<<n); 
return num.toString(16); 
} 
console.log(bitOper(0x1234, 3)); //123c

由于js整數(shù)類型只有32位的限制,上述示例代碼僅支持n<31的簡(jiǎn)單情況(第31位是符號(hào)位)。

相關(guān)文章

最新評(píng)論