【志銀】#define lowbit(x) ((x)&(-x))原理詳解
分析下列語句
#define lowbit(x) ((x)&(-x))
可寫成下列形式:
int Lowbit(x) {
return x&(-x);
}
例1:x = 1
十進位制轉二進位制(設位數為8):
1 => 0000 0001
-1=> 1111 1111(此處為1的補碼)
1&(-1)的二進位制位運算為(二個二進位都為1):
所以1&(-1)=1
例2:x = 6
十進位制轉二進位制(設位數為8):
6 => 0000 0110
-6=> 1111 1010(此處為6的補碼)
6&(-6)的二進位制位運算為(二個二進位都為1
所以6&(-6)=2
總結
求出2^p(其中p: x 的二進位制表示數中, 右向左數第一個1的位置),
如6的二進位制表示為110,向左數第零個為0,第一個為1,則p=1,
故Lowbit(6) = 2^1 = 2。
或直接理解為:二進位制按位與運算,返回不大於x的2的最大次方因子
開始於:2016-03-18、16:37:32
相關推薦
【志銀】#define lowbit(x) ((x)&(-x))原理詳解
分析下列語句 #define lowbit(x) ((x)&(-x)) 可寫成下列形式: int Lowbit(x) { return x&(-x); } 例1:x = 1 十進位制轉二進位制(設位數為8): 1 => 0000 0001 -1=> 1111
【志銀】nginx_php_mysql_phpMyAdmin配置(Windows)
✄更新中... 更新日期:2018.11.16 ★版本說明+快捷下載(官網) ★整合包(自制) 下載連結 使用說明 解壓即可開始使用,nginx_php_mysql開啟及關閉直接使用軟體呼叫批處理執行。 ★下載及安裝過程(詳細) 1.nginx 1.1.nginx下載
【重點突破】——第三方繪圖工具FusionCharts.js的使用詳解
統計圖表 使用詳解 body 選擇 ons sessions chart 項目組 線圖 一、引言 項目組中,經常會因為繪制圖表的繁雜度,衡量會不會使用第三方繪圖工具,如果自己做很困難,成本使用高於第三方繪圖工具庫,就會使用。很多人使用的是Chart.js,因為它是免費使用的
考研 演算法【資料結構】時間複雜度的計算 配套例子詳解
【資料結構】時間複雜度的計算 配套例子詳解 一、什麼是演算法: 演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。 演算法的特徵: 一個演算法應該具有以下五個重要的特徵: 有
【HANA系列】SAP HANA XS使用JavaScript資料互動詳解
公眾號:SAP Technical 本文作者:matinal 原文出處: http://www.cnblogs.com/SAPmatinal/ 原文連結: 【HANA系列】SAP HANA XS使用JavaScript資料互動詳解 前言部分 下面幾
【C語言】讓你不再害怕指標——C指標詳解(經典,非常詳細)
前言:複雜型別說明 要了解指標,多多少少會出現一些比較複雜的型別,所以我先介紹一下如何完全理解一個複雜型別,要理解複雜型別其實很簡單,一個型別裡會出現很多運算子,他們也像普通的表示式一樣,有優先順序,其優先順序和運算優先順序一樣,所以我總結了一下其原則:從變數名處起,根
【圖割】最大流/最小割演算法詳解(Yuri Boykov and Vladimir Kolmogorov,2004 )
最大流/最小割(Max-Flow/Min-Cut)在解決計算機視覺中的能量方程最小化問題的強大,最早發現是Greig於1989年發表的文章:Exact Maximum A Posteriori Estimation for Binary Images。 最大流最小割演算法求解的能量方程,通常是基於圖結構
【Java基礎】Jar包結構結構分析和操作詳解
一 JAR包結構分析 JAR(Java Archive FIle)Java歸檔檔案,是Java標準的文件格式,是一個或多個Java位元組碼檔案的打包壓縮檔案,採用常見的ZIP壓縮演算法,和ZIP檔案十分類似,可以直接解壓。 JAR檔案主要用來壓縮和釋
【資源分享】迅為 iTOP-4412開發板平臺詳解
開發板是一個相對複雜的電子系統,請耐心按照本章說明組裝,以免造成不必要的損失。 使用者最好使用迅為提供的連線線,因為有些部件是專門定製的,可能和市場上購買的其它 連線線和部件不匹配,擅自使用市場上購買的接線或者部件可能損傷開發板。 在完全弄清楚開發板介面訊號定義之前,如果本
【C#MVC】搭建.netMVC4工程(四)錯誤詳解-ErrorGeneratingOutput
遇到一個問題,不知道各位有沒有遇到過。在網上搜索沒有中文的解決方案。 問題描述: 解決辦法:在你的系統變數中找到名為VS120COMNTOOLS的變數: 去你們本地的資料夾(每個人根據安裝目錄不一致,可能不太一樣),你會發現在指向的目錄下沒有錯
【Shell程式設計】檢測Nginx服務是否正常執行(詳解)
大家好今天給大家帶來shell指令碼的一個例項(檢測Nginx服務是否正常執行) 需求:檢測Nginx服務是否正常的執行,如果不在執行那麼就啟動Nginx伺服器,那麼如果啟動Nginx失敗,那麼通過郵
【小程式】頁面路由觸發的生命週期函式詳解
1、頁面路由、頁面棧 個人看來,頁面路由說白了就是頁面跳轉,也可以看作是頁面入棧和出棧的過程。 官方文件中這樣寫到:(個人比較喜歡看圖表的形式,因為比較清晰) 2、生命週期函式 小程式有5個生命週期函式: 2.1、onLoad():頁面載入時觸發。一個頁面只
【深度學習】Batch Normalizaton 的作用及理論基礎詳解
文章開始前,先講一下 Batch Normalization 有什麼好處。 加速神經網路的訓練過程。 減少對 Dropout 的依賴 可以用比較大的學習率去訓練網路,然後不用在意權重引數的初始化問題。 其實,最重要的就是第一點,Batch Norm 可以加
【JVM專題】JVM從概述到調優圖文詳解,含思維腦圖深度剖析!
# JVM概述 JVM 是一種用於計算機裝置的規範,它是一個虛構的計算機的軟體實現,簡單的說,JVM 是執行 byte code 位元組碼程式的一個容器。 它有一個直譯器元件,可以實現 JAVA 位元組碼和計算機作業系統之間的通訊,java程式只需要在JVM 上一次編譯,多出執行,因此JAVA具有跨平臺性
【圖文詳細 】HDFS面試題:hadoop1.x和2.x架構上的區別
(1)Hadoop 1.0 Hadoop 1.0即第一代Hadoop,由分散式儲存系統HDFS和分散式計算框架MapReduce組成,其中,HDFS由一個NameNode和多個DataNode組成,MapReduce由一個JobTracker和多個TaskTracker組成,對應Hadoop
【二分搜尋】查詢最後一個不大於x的數
問題: 二分搜尋有好幾種變體,自己仍在摸索中。先記錄一種用於“查詢最後一個不大於x的數”的二分搜尋模板。 不同變體的主要區別是while條件 ,if else條件 ,if else條件執行語句 ,return值 的問題: while(lo<=hi)還是while(lo&l
【前端圖表】echarts實現散點圖x軸時間軸
// 基於準備好的dom,初始化echarts例項 var myChart = echarts.init(document.getElementById('main')); //第二步構造資料 var data1 = [];//資料區域縮放元件 var data2
【誌銀】Ubuntu Apache2配置SSL證書
conf bsp cert ssl ubuntu min 文件夾 找到 nbsp 1.準備工作 證書文件:zain.crt、zain.key /etc/apache2/文件夾下新建ssl 文件夾,將證書文件放入/etc/apache2/ssl 2.配置SSL證
【C語言】define和typedef的區別
#define是 巨集定義命令,#define DINT int相當於將程式碼中的int可以寫為DINT,DINT等價於int。typedef int TINT; 是型別定義,TINT型別的變數就是int型別的變數。 1.typedef int TINT; 和#define
【C基礎】#define巨集定義中的#,##,@#,\ 這些符號的神奇用法
C/C++ 巨集命令的神奇用法。 先看下面三條語句: #define Conn(x,y) x##y #define ToChar(x) #@x #define ToString(x) #x 1. ## 連線操作符 ##表示連線(token pa