前提知識點2:原碼,反碼,補碼
有符號資料表示法
• 在計算機內,有符號數有3種表示法:原碼、反碼和補碼。所有資料的運算都是採用補碼進行的。
• 原碼
• 就是二進位制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。
• 反碼
• 正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
• 補碼
• 正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
左移運算:整數左移應該是先轉為二進位制,左邊移動相應位數,右邊補0,符號位不變。
-9>>2
-9的原碼:10000000 00000000 00000000 00001001
-9的反碼:11111111 11111111 11111111 11110110
-9的補碼:11111111 11111111 11111111 11110111
右移兩位:1111111111 11111111 11111111 111101
求回原碼: 1.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11—— -3
左移運算:數值a向左移動n位,得到的值是a*2的n次方。
右移運算:數值a向右移動n位,得到的值是a*2的-n次方。—-直接取到小於商的最大整數
移位規則規定:
/* 右移:
如果是有符號右移,首先看正數還是負數,對正數右移,高位補0,符號位也就是最高位不變;對負數右移,
* 需要先把負數的補碼表示出來,然後進行右移,高位補1,最高位不變,好了之後再進行求原碼。
* 如果是無符號右移,正數跟有符號右移一樣,負數需要先把補碼表示出來,然後進行右移,高位補0,然後直接
* 計算十進位制即可。
左移:對負數和整數進行左移都要保持最高位不變,右邊都補0.因為右邊不牽扯正負號問題。另外負數左移也需要先轉補碼。
* */
9<<2:
1. 先求出9的二進位制:
2. 對二進位制求補碼。
3. 移位運算,法則參考上面注釋的描述。
難點:對負數求右移操作
//求乙個負數的移位運算結果
int a=-9;
// 將a轉為二進位制,由於a為負數,所以最高位應該為1,1代表負號
// 原碼 10000000 00000000 000000000 00001001
// 負數在計算機裡面是以補碼的方式儲存的,原碼需要變成補碼,原碼求補碼,符號位不變
// 其他位取反然後加1,按照這個方式,補碼為:11111111 11111111 11111111 11110111
// 右移2位 最後兩位沒有了,前面補兩位1也就是負號。 11111111 1111111 11111111 11111101
// 補碼求原碼 ,計算方式跟原碼求補碼一樣:10………………..。11 結果就是-3
邏輯運算:
&&(邏輯與),||(邏輯或),!邏輯非(這三個運算子算出來的結果也只有兩個值:false,true)
邏輯與:只要有乙個為false,最後表示式結果false 乘法運算,false代表0,true代表1
邏輯或:有乙個為true,最後結果true 加法運算:false代表0,true代表1
邏輯運算短路現象:當整個表示式的值已經確定時候,後面的表示式部分不參與運算。
int a=9;
int b=8;
system.out.println(9>0||((a=a+1)==13));//右邊的式子不參與運算原因是左邊為true,在
//邏輯或裡面有一端為true,整個表示式就是true
system.out.println(a);//9
按位運算子
和邏輯運算相似,&代表與運算(乘法運算),|代表或運算(加法運算),^代表異或(相同為0,不同為1) ,~代表取相反。
按位與:&對0,1進行運算 有乙個為0,最後按位與的結果就是0,相當於乘法
按位或:|,有乙個為1,最後結果為1,相當於加法
按位非:~ 非0就是1,非1就是0
按位異或:^ 相同為0,不同為1
要進行位運算,首先要會轉二進位制:
整數轉二進位制,除以2取餘數,最後一直算到被除數小於2為止。最後將餘數倒著寫出來即可。
int a=9;
int b=8;
system.out.println(a&b);//8
system.out.println(a|b);//9
system.out.println(~b);//7
system.out.println(a^b);//1
自增自減運算子:
i++ (自加運算子) 整個表示式的值不變,但是i的值加了個1,先求值,再運算
i– 整個表示式的值不變,但是i的值減了個1,先賦值,再運算
++i 整個表示式的值加1,i的值加了個1—–先運算,再賦值
–i 整個表示式的值減1,i的值減了個1 —–先運算,再賦值
8.string字串初探
屬性+方法
雙引號裡面寫文字,連線多個字串及變數用+
構建字串變數有兩種方式:
1) string str=new string(「sssssssssssssss」);
2) string str=」ssssssssssssssssssss」
字串如果要進行拼接:str=str+」anoter string」;
string類裡面有哪些常用的功能?
1. 字串長度str.length()
2. str.charat(i) i 從0開始的。
9.鍵盤輸入
2.3.
4.
斗公尺奮鬥故事之 「菜鳥」銷售李哥的逆襲
在這個時代,只要你願意幹,你就會找到適合你的工作 而只要你肯努力,就能在打拼的城市立足,哪怕是你底子差薄 起步晚。今天,一站式招聘服務平台斗公尺,給大家帶來的是金章魚會員李哥的逆襲故事。起步雖晚,但銷售是草根逆襲最快捷徑 與很多選擇到大城市打拼的年輕人相比,今年 45 歲的李哥的起步顯然有點晚,因為...
Java語法基礎之語句
程式流程控制語句 分四類 a 判斷結構 if b 選擇結構 switch c 迴圈結構 do while while for d 其他流程控制語句 break continue 一 判斷結構 if 1 if語句三種格式 1,if 條件表示式 3,if 條件表示式 執行語句 執行語句 2,if 條件表...
Java語法基礎之for語句練習
控制語句 for練習 語句的巢狀應用 累加求和,計數器 迴圈巢狀 一 語句的巢狀應用 語句巢狀形式。其實就是語句中還有語句。形式多種多樣,沒有固定的格式和套路。1 列印偶數 for int x 1 x 10 x 二 累加求和,計數器 1 獲取1 10的和,並列印。思路 1,定義變數用於儲存不斷變化的...