關於位運算

來自https://www.luogu.org/blog/chengni5673/er-jin-zhi-yu-wei-yun-suan    轉侵刪

一··左移<<  右移>>

“将一个二进制数向左或向右移动 k 位,就是给一个数乘 2^k 或者除 2^k(末尾1不计)。”

二·取反~

“对于 int 来说, ~ x=-x-1”

三·與and &

“对于两个二进制数的每一位,如果这一位都是 1 ,那么这一位为 1 ,否则这一位为 0。”

if(x&1) 那麼x是奇數

四·或or |

“如果这两个数此位有一个 1 那么此位就是 1,否则为0。

  • x & y<=x
  • x | y>=x”

五·異或xor  ^

“对于两个二进制数的每一位,如果相同则为 0 ,否则为 1。

显而易见的是一个数异或他自己肯定是得 0 的

对于一个形如 2*n 的数 x, x ^ 1 =x+1,而对于一个形如 2*n+1 的数 x, x ^ 1 =x-1

如果 x ^ y=z 那么 y ^ z=x, x ^ z=y”

"关于位运算的优先级,大致按下面排序

加减运算 >> 移位运算 >> 比较大小运算 >> 与运算 >> 异或运算 >> 或运算"

優化

交換兩個整數: x=x^y, y=y^x, x=x^y

原文地址:https://www.cnblogs.com/azureholmes/p/9913241.html

时间: 2024-10-14 18:56:46

關於位運算的相关文章

王堅:「資料」改變了商業模式,運算能力決定企業的競爭力

阿里巴巴集團技術委員會主席.阿里巴巴的雲端建立者,王堅博士於上週來到台灣,出席了阿里巴巴針對台灣創業者舉辦的一場大會時,發表了他對於雲端運算.大數據以及人工智慧的一些看法以及建議. 由於是針對創業者的場合,王堅針對現在創業者最注意的四個趨勢:網際網路.大數據.雲端運算和人工智慧提出了建議.王堅表示,當初阿里巴巴談電子商務的時候,並不是大家想的簡單的把商店搬到網路上如此而已,而是從「相信網際網路是未來商業的基礎設施」這個基本觀念出發.而現在,你可以看到當初有這樣想法的網路公司,現在都已經成長為科技

Linux中的數學運算

expr作加減乘除法,但只限于整型. expr 3 + 2 expr 5 - 2 expr 3 * 2 expr 10 / 2 要作浮點數運算,可使用awk. [[email protected] ~]# awk -v x=2.5 -v y=2.5 'BEGIN {printf "%.4f\n",x*y}' 6.2500 [[email protected] ~]# awk -v x=2.5 -v y=2.5 'BEGIN {printf "%.2f\n",x/y}

小數點的運算[討論區- PHP新手區] : 台灣PHP聯盟

http://twpug.net/modules/newbb/viewtopic.php?post_id=10083 Just popping in 註冊日期:2007/6/10 17:43 文章: 5 $a="1181745772.201471";$b="1181745772.522440"; $c=$b-$a;echo $c;?> 以上的程式 理論說 $b-$a 的答案 應該是 0.320969 但是 我跑出來 卻是 0.320968866348 請教各位

關於php接ICBC的支付接口的解決方案

一:背景: 目前項目使用的是php語言開發,需要接入中國工商銀行的ICBC的線上支付接口. 二:遇到的問題:支付時需要對數據簽名,但是銀行那邊不提供php版本的程序,只有java版本的,以下是對接人回復的郵件: 三:思路: 目前大概有3種解決方案: 1.  通過使用一個叫 php-java-bridge 的插件,在php中調用java的函數 2. 把java的函數改寫成php版本 3. 在服務器配置javaWeb環境,通過http請求把簽名的參數傳入,從而獲取簽名 四: 具體做法: 我採取的是第

关于原码反码补码以及位元算

首先人脑能识别的,也就是我们常写的就是原码,因为数字都有正负之分所以,二进制的时候用最高位表示正负,0为正,1为负,例如3二进制位00000011,-3二进制位10000011. 反码:正数的反码等于其本身,负数的反码:符号位不变其他位取反.(00000011)原=(00000011)反,(10000011)原=(11111100)反,为什么会有反码呐,因为用原码进行计算的时候: 比如3-3=3+(-3)=(00000011)原+(10000011)原=10000110=134,就会出现这样的误

时?间?单?位?换?算?表

时间单位换算表 1秒=1000毫秒(ms)  1毫秒=1/1,000秒(s) 1秒=1,000,000 微秒(μs) 1微秒=1/1,000,000秒(s) 1秒=1,000,000,000 纳秒(ns) 1纳秒=1/1,000,000,000秒(s) 1秒=1,000,000,000,000 皮秒(ps) 1皮秒=1/1,000,000,000,000秒(s)  1s=1000ms  1ms=1000us  1us=1000ns  1ns=1000ps 60秒 = 1分钟 60分钟 = 1小时

【求助】關於OleDbParameter的問題

小弟做簡單測試時遇到一個很奇怪的問題. 以前一直用sqlParameter比較多,第一次用OleDbParameter.debug卻感覺沒有把值傳過去導致查不到結果. 只有一個參數,所以不存在順序的問題. 還望大神指點一二.謝謝. .net 4.0+vs 2013+c# 1 protected void Button1_Click(object sender, EventArgs e) 2 { 3 string StrSQL = @"select * from acoa1002 where [e

關於博客資源下載(第1次必看)

本博客所有資源下載方法.(新人必看!!!) 1. 圖片種子下載.    關於圖片資源的,只要把圖片另存為到桌面. 名字改成  xxx.rar   或者  xxx.7z   xxx.7zip  只要改名為你電腦上有的壓縮軟體後輟即可. 2. BAT種子下載.    關於BAT資源, 只要把BAT數據複製下來,然後到桌面上新建個txt空文檔. 然後把複製的BAT數據粘貼進空文檔裏面. 然後保存為 xxx.bat 雙擊即可. 3. 字符種子下載.    用到時再講. 4. 待更新... 關於博客資源下

關於 WebClient wc = new WebClient() 下載第三方數據不能進安安信任異常

報錯異常:The underlying connection was closed: Could not establish trust relationship for SSL/TLS secure channel(中文版為: 基礎連接已關閉: 無法為 SSL/TLS 安全通道建立信任關係.)WebClient wc = new WebClient();//用这个密匙字符串获取我(me)的相册  graph_url = "https://graph.facebook.com/" +