1. 程式人生 > >位運算中的左移和右移的計算詳解

位運算中的左移和右移的計算詳解

最近在學習javaScrapt,在學到位運算子這部分的時候,突然發現看不懂書上的例子了。經過查詢資料後,發現了一遍不錯的文章。分享一下:
正數的左移和右移
以3為例
3的二進位制為
00000011
右移2位的時候將最右的11去掉左邊補00結果為:00000000 — >十進是中的0
左移2位的時候將最左的00去掉右邊補00結果為:00001100 —–>十進是中的12

對於-3來說,負數的都是以補碼的形式存在於計算器中
補碼 = 反碼+1
-3的二進位制為
100000011
取反的補碼為(符號為不變)
111111100
再加1,為補碼11111101

右移2位的時候將最右的01去掉左邊補11結果為:11111111 —> 為補碼,要求原碼
還需要-1 :11111110 ,再取反(符號位不動) :10000001:——>十進位制中的-1,所以-3的右移2位為十進位制中的-1

左移2位的時候將最左邊11去掉右邊補00結果為:11110100 —-> 為補碼,要求原碼
還需要-1:11110011,再取反(符號位不動):10001100:—–>十進位制中的-12,所以-3的左移2位為十進位制中的-12

相關推薦

運算中的左計算

最近在學習javaScrapt,在學到位運算子這部分的時候,突然發現看不懂書上的例子了。經過查詢資料後,發現了一遍不錯的文章。分享一下: 正數的左移和右移 以3為例 3的二進位制為 00000011 右移2位的時候將最右的11去掉左邊補00結果為:00

java (邏輯與&&、按與&、邏輯或||、按或|、異或^、左)的區別?

首先名稱是不同的 &&邏輯與  ||邏輯或  它們都是邏輯運算子 & 按位與  | 按位或  它們都是位運算子 if(a==1&&b==2) 這是說既要滿足a=1也要滿足b=2 if(a==

C語言運算子:與、或、異或、取反、左

語言位運算子:與、或、異或、取反、左移和右移 位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。C語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。 C語言提供的位運算

C語言裡的左運算

左移 左移就是把一個數的所有位都向左移動若干位,在C中用<<運算子.例如: int i = 1; i = i << 2; //把i裡的值左移2位 也就是說,1的2進位制是000…0001(這裡1前面0的個數和int的位數有關,

C語言運算子及作用:與、或、異或、取反、左

一、& 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 應用:(1)清零 若想對一個儲存單元清零,即使其全部二進位制位為0,只要找一個二進位制數,其中各個位符合一下條件: 原來的數中為1的位,新數中相應位為0。然後使二者進行&運算,即可

C/C++裡面的左

int i = 1;i = i << 2; //把i裡的值左移2位也就是說,1的2進位制是000...0001(這裡1前面0的個數和int的位數有關,32位機器,gcc裡有31個0),左移2位之後變成000... 0100,也就是10進位制的4,所以說左移1位相當於乘以2,那麼左移n位就是乘以2的

C語言實現字串迴圈左

C語言實現迴圈左移和右移這個沒有什麼好說的,直接上程式碼:#include <stdio.h> //寫一個函式 實現功能:輸入字串,向右迴圈或者逆時針移動N位元組,再輸出這個字串 /* //比如:左移2位元組 //左邊不變,右邊變 p[0

通過按鈕操作元素左

在寫列表的過程中遇到一個問題類似下面的圖片,當元素排滿時隱藏,並且可以通過左右按鈕使裡面的元素左右移出。 由於前端知識匱乏,遇到了一些問題 1、方法一 外部的div的寬度是固定不變的,裡面的元素的個數不是固定的,當內部所有元素的個數的寬度超出外部div的時候,

java實現迴圈左的簡單演算法

 byte a=112,用程式實現,將其迴圈左移三位和右移三位。 112的二進位制原碼:0111 0000 112迴圈左移3位後的二進位制碼:1000 0011 112迴圈右移3位後的二進位制碼:0000 1110 先將迴圈左移的程式程式碼告訴大家: public clas

C:運算之 左運算運算

C:位運算之 左移運算(<<)和右移運算(>>) 在C中,位運算包含兩種移位運算: 左移運算:<< 右移運算:>> 左右位移運算,在數值為無符號和有符號情況下具有不同行為。 有符號左右位移運算

java 運算中移動位數超過資料長度的兩種不同方式

記錄 java 位運算中的兩點注意事項:移動位數超過資料長度和右移的兩種不同方式。 int、long型別資料移動等於或超過最大位數 在 java 中,int 型別的資料長度為 32 位,如果將 int 型別左移或者右移大於或等於 32 位時,並不會像預計

運算符、按與、按或、按非、左、原碼、反碼、補碼

位運算符 位數 是我 計算機 基礎上 個數字 部分 普通 bsp 位運算符的基本規則1,位運算符都是針對整數的二進制數字形式而進行的。2,按位與運算基本規則(規則表):1 & 1 ==> 11 & 0 ==> 00 & 1 ==>

計算機編碼--為什麽整數中負數的除法不是一回事

什麽 lock 其中 img csdn leg tail 計算 的區別 緣起   最近在看卡耐基梅隆大學的【深入理解計算機系統實驗】之datalab時,遇到一個題目: 1 /* 2 * divpwr2 - Compute x/(2^n), for 0 <=

go語言學習-iota的用法

在go語言中iota比較特殊,是一個被編譯器修改的常量,在每一個const關鍵字出現時被重置為0,然後在下一個const出現之前,每出現一次iota,其所代表的數字就會自動加1 左移運算子”<<”是雙目運算子。左移n位就是乘以2的n次方。 其功能把

C語言中左

左移 int i=1; i=i<<2;//把i裡面的值左移2位121的2進位制是 000…0001 (這裡前面0的個數和int的位數有關,32位機器,gcc裡有31個0),左移2位之後變成: 000…0100, 也就是10進位制的4,所以說左移1位相

c++中的左運算

今天在看X264的原始碼時,發現裡面大量應用了">>"運算子,看書的時候注意過這個細節,不過在工作中一直沒有用到,也沒記住。重新查了K&R,裡面說無符號數的移位總是用0填充,而對於有符號數,"<<"是用0填充的,“>>”則與機

關於Java運算子的含義:左、無符號與、或、非、異或

一、左移( << ) 形式:a<<b 含義:將a的數值在二進位制下向左移動b個位置 示例:5<<2 //原數值 0000 0101 //左移後 0001 0100 二、右移( >> ) 形式:a>>b 含義:將a的

5、運算子、按與、按或、按非、左、原碼、反碼、補碼

 位運算子的基本規則 1,位運算子都是針對整數的二進位制數字形式而進行的。 2,按位與運算基本規則(規則表): 1 & 1 ==> 1 1 & 0 ==> 0 0 & 1 ==> 0 0 & 0 ==> 0; 3,

C語言 算術左邏輯左

下面有幾個是注意的地方: 1. 不管是算術左右移和邏輯左右移,最好是unsigned型別,因為這樣算術與邏輯是一樣的結果。 2. C編譯器,預設是算術移位,如是signed型別,這一點一定要把握好。 3. 程式設計過程中,一定要注意右移操作,注意signed 和unsi

Python 代碼塊左

arm mage 技術分享 ont python ide wid http 判斷 (就 IDE 是 PyCharm 來說) 選中代碼塊: 1)右移:直接 Tab 2)左移:Shift + Tab Python 對代碼對齊要求很嚴格的。 Python的對齊方式很重要