国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一道看似簡單的面試題

kid143 / 896人閱讀

摘要:二進制本身就是為這個數(shù)字而使用的,所以說這道面試題直指二進制的使用是沒錯的。正負在二進制中,第一位為的是負數(shù),是正數(shù)。

前言
使用PHP,給定一個數(shù),判斷這個數(shù)是否是二的N次方

這樣看似簡單的一個面試題, 實際牽出了很多基礎知識,本章在為大家補習基礎知識的情況下來解答這道題。先亮出答案

function exponentiation($number)
{
    if ($number < 0) {
        return false;
    }
        
    if (($number & ($number - 1)) == 0) {
        return true;
    } else {
        return false;
    }
}
    
exponentiation (2);
exponentiation (8);
exponentiation (16);
exponentiation (32);
exponentiation (128);

這是查閱后的最最標準的答案,其他類似通過循環(huán)等等答案就略過把。

運算

實際這道面試題考的并非是算法,而是作為開發(fā)人員的你“底子”夠不夠。
運算符應該是每門語言hello world 后立馬要學習的。運算符分很多種,賦值運算符,比較運算符等等。我想大多自學或者培訓出道的沒有經過系統(tǒng)化學習的童鞋的,對這塊的知識應該很薄弱把。當然賦值、比較什么的很熟悉,因業(yè)務基本逃不過這些。但對位運算符,你真的吃透了嗎?

這道題的考點一是位運算符的使用,上面說過了本題考察的并非算法,而是你對二進制的了解,而在php中能操作二進制的運算符貌似 (我的知識范圍內) 只有位運算符
PHP位運算符 (部分)

本道面試題用到了 & 所以不詳解其他的運算符,需要更多了解請移步官方
http://php.net/manual/zh/lang...

運算符 附加信息
& 按位與運算符
^ 按位異或運算符
按位與

按位與以簡單易懂的方式來講就是二進制位不相同的抵消,相同的保留

舉幾個栗子

公式 -> 轉為二進制后的公式 -> 二進制結果 -> 十進制結果
2 & 3 -> 0010 & 0011 -> 0010 = 2
10 & 7 -> 1010 & 0111 -> 0010 = 2
32 & 70 -> 0100000 & 1000110 -> 0000000 = 0
按位異或

按位異或以簡單易懂的方式來講就是二進制位相同的抵消,不相同的保留

舉幾個栗子

公式 -> 轉為二進制后的公式 -> 二進制結果 -> 十進制結果
2 ^ 3 -> 0010 ^ 0011 -> 0001 = 1
10 ^ 7 -> 1010 ^ 0111 -> 1101 = 13
32 ^ 70 -> 0100000 ^ 1000110 -> 1100110 = 102
進制

借用百度百科上的一段話

二進制是計算技術中廣泛采用的一種數(shù)制。二進制數(shù)據是用0和1兩個數(shù)碼來表示的數(shù)。它的基數(shù)為2,進位規(guī)則是“逢二進一”,借位規(guī)則是“借一當二”。

二進制本身就是為2這個數(shù)字而使用的,所以說這道面試題直指二進制的使用是沒錯的。2的n次方則就是

n 公式 結果
1 2 2
2 2x2 4
3 2x2x2 8
4 2x2x2x2 16

換算成二進制的表格是

n 公式 結果
1 2 000010
2 2x2 000100
3 2x2x2 001000
4 2x2x2x2 010000

由此看出2的n次方的二進制最高位是1,其余補0,(n&(n-1))==0 并且 n> 0 的情況下必定是2的n次方,為什么要-1呢?在二進制中每一位必須都不相同&后才會得出0,上述已經講解了&的運算結果。例如十進制的16

16 & (16 - 1) = 
010000 & (001111) = 0 

不要糾結(n&(n-1))==0 這個公式是怎么來的,作為程序員,我感覺應該把更多時間放到反推上面來,去應證這個公式的正確性。

驗證是否是2的n次方,笨的方法就是一直除2,除到最后等于0則就是2的次方,所以公式如上
補位

如果是2個二進制進行運算時,計算機會統(tǒng)一位數(shù),例如

01
011
<------> 
001
011

計算機會將01自動補一位為001去方便運算。

正負

在二進制中,第一位為1的是負數(shù),0是正數(shù)。如果沒有補零的情況下

10000000000
01111111111

雖然計算后也是0,但它并不是2的n次方,因為第一組二進制是負數(shù)。

補充

由上述題補充的另外一道題

給定任意數(shù),計算是2的幾次方?
function power($number){
    if ($number < 0) {
        return false;
    }
    
    if (($number & ($number - 1)) == 0) {
        
        // 數(shù)學不好的,就看下面的方法
        // $number = decbin($number);
        // return (mb_strlen($number)-1);
        // 數(shù)學可以的就看下面的方法
        return floor(log($number,2));
    } else {
        return false;
    }
}

判斷是否是2的n次方

如果是則將十進制數(shù)字轉為二進制

計算總長度-1獲取到是2的幾次方,按照0的個數(shù)來計算

致謝

感謝你看到這里,我也是文中提起的沒好好學基礎的一名程序員,但當你看到我這篇文章后,希望你也可以提起精神,去重溫下基礎,對你未來的職業(yè)生涯會起作用的。本章內容純屬自己理解,如有出入,請大佬們監(jiān)督批評,謝謝

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29078.html

相關文章

  • 求職準備 - 收藏集 - 掘金

    摘要:一基礎接口的意義百度規(guī)范擴展回調抽象類的意義想不想通過一線互聯(lián)網公司面試文檔整理為電子書掘金簡介谷歌求職記我花了八個月準備谷歌面試掘金原文鏈接翻譯者 【面試寶典】從對象深入分析 Java 中實例變量和類變量的區(qū)別 - 掘金原創(chuàng)文章,轉載請務必保留原出處為:http://www.54tianzhisheng.cn/... , 歡迎訪問我的站點,閱讀更多有深度的文章。 實例變量 和 類變量...

    cuieney 評論0 收藏0
  • 程序語言

    摘要:一面應該還問了其他內容,但是兩次面試多線程面試問題和答案采訪中,我們通常會遇到兩個主題采集問題和多線程面試問題。多線程是關于并發(fā)和線程的。我們正在共享重要的多線程面試問題和答案。。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 【碼農每日一題】Java 內部類(Part 2)相關面試題 關注一下嘛,又不讓你背鍋!問:Ja...

    mtunique 評論0 收藏0
  • 程序語言

    摘要:一面應該還問了其他內容,但是兩次面試多線程面試問題和答案采訪中,我們通常會遇到兩個主題采集問題和多線程面試問題。多線程是關于并發(fā)和線程的。我們正在共享重要的多線程面試問題和答案。。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 【碼農每日一題】Java 內部類(Part 2)相關面試題 關注一下嘛,又不讓你背鍋!問:Ja...

    stefan 評論0 收藏0
  • 一道簡單面試引發(fā)思考

    摘要:另一個問題,就是我下面要提及的作用域問題,我當時思考的時間太久了這是回憶中的面試題實際略有差異,不糾結了說一下腳本的運行結果引用錯誤中給出的錯誤提示。 版權聲明:此文首發(fā)于我的簡書賬號人生還有多少個二十年,轉載請注明出處。 此處有幾百字嘮叨:   當天,我早早起床,跨越上百公里,高德導航,路人指點,跌跌撞撞到達招聘會現(xiàn)場,當時已是中午十二點半,吃了午餐(半瓶白開水),開始準備投遞...

    wpw 評論0 收藏0
  • 一道面試

    摘要:寫在前面這道題是本人在面試一家公司時的一個簡單的基礎問題,公司就不透露了,算是國內很有名的公司,本人面試的只是實習崗位。 寫在前面 這道題是本人在面試一家公司時的一個簡單的基礎問題,公司就不透露了,算是國內很有名的公司,本人面試的只是實習崗位。一些大的問題就不再說了,每個人遇到的可能都是不一樣的,基本會圍繞著我們平常所常用的東西來聊,下面就說一道小題: 題目 寫出下面幾個表達式的結果:...

    sihai 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<