位運算及進制轉換
目錄- 位運算及進制轉換
- 1.1 識別符號的命名規則和規范
- 1.1.1 識別符號概念
- 1.1.2 識別符號的命名規則
- 1.1.3 練習(判斷變數名是否正確)
- 1.1.4 識別符號命名規范
- 1.2 關鍵字
- 1.3 保留字
- 1.3.1 介紹
- 1.4 鍵盤輸入陳述句
- 1.4.1 介紹
- 1.4.2 步驟
- 1.4.3 案例演示
- 1.5 進制(程式員的基本功)
- 1.5.1 進制介紹
- 1.5.2 演示四種進制
- 1.5.3 進制的圖示
- 1.5.4 進制的轉換(基本功)
- 進制轉換的介紹
- 1.6 其他進制轉十進制
- 1.6.1 二進制轉十進制
- 1.6.2 八進制轉十進制
- 1.6.3 十六進制轉十進制
- 1.7 十進制轉其他進制
- 1.7.1 十進制轉二進制
- 1.7.2 十進制轉八進制
- 1.7.3 十進制轉十六進制
- 1.8 二進制轉八、十六進制
- 1.8.1 二進制轉八進制
- 1.8.2 二進制轉十六進制
- 1.9 八、十六進制轉二進制
- 1.9.1 八進制轉二進制
- 1.9.2 十六進制轉二進制
- 1.10 原碼、反碼、補碼(重點 難點)
- 1.10.1 二進制在運算中的說明
- 1.10.2 原碼、反碼、補碼要點
- 1.12 位運算
- 1.12.1 簡單思考題
- 1.12.2 位運算子介紹
- 1.12.3 >>、<< 和 >>> 的運算規則
- 1.12.4 應用案例 BitOperator01.java
- 1.13 本章作業
- 1.1 識別符號的命名規則和規范
1.1 識別符號的命名規則和規范
1.1.1 識別符號概念
- Java對各種變數、方法和類等命名時使用的字符序列稱為識別符號
- 凡是自己可以起名字的地方都叫做識別符號 int num = 88;
1.1.2 識別符號的命名規則
- 由26個英文字母大小寫,0-9,_或$組成
- 不可以以數字開頭,int 3ab = 1; //錯誤
- 不可以使用關鍵字和保留字,但能包含關鍵字和保留字
- Java中嚴格區分大小寫,長度無限制,int totalNum = 10; int n = 90;
- 識別符號1不能包含空格, int a b = 10;//錯誤
1.1.3 練習(判斷變數名是否正確)
abc //ok
abc123 //ok
1abc //no 不能以數字開頭
a-h //no 不能用-
a h //no 不能有空格
s$3 //ok
class //no 不能使用關鍵字
int //no 不能使用關鍵字
public //no 不能使用關鍵字
double //no 不能使用關鍵字
static //no 不能使用關鍵字
goto //no 不能使用保留字
stu_name //ok
1.1.4 識別符號命名規范
1)包名:多單詞組成時所有字母都小寫:aaa.bbb.ccc //比如: com.hsp.com
2)類名、介面名:多單詞組成時,所有單詞首字母大寫:XxxYyyZzz[大駝峰] //比如:TankShotGame
3)變數名、方法名:多單詞組成時,第一個單詞首字母小寫,第二個單詞開始每個單詞首字母大寫:xxxYyyZzz[小駝峰,簡稱 駝峰法] //比如:tankShotGame
4)常量名:所有字母都大寫,多單詞時每個單詞用下劃線連接:XXX_YYY_ZZZ 比如:定義一個所得稅率 TAX_RATE
1.2 關鍵字
關鍵字的定義和特點(不用背)
定義:被Java語言賦予了特殊含義,用做專門用途的字串(單詞)
特點:關鍵字中所有的字母都為小寫
用于定義資料型別的關鍵字
| class | interface | enum | byte | short |
|---|---|---|---|---|
| int | long | float | double | char |
| boolean | void |
用于定義資料型別值的關鍵字
| true | false | null |
|---|---|---|
用于定義流程控制的關鍵字
| if | else | switch | case | default |
|---|---|---|---|---|
| while | do | for | break | continue |
| return |
用于定義訪問權限修飾符的關鍵字
| private | protected | public |
|---|---|---|
用于定義類、函式、變數修飾符的關鍵字
| abstract | final | static | synchronized |
|---|---|---|---|
用于定義類與類之間的關鍵字
| extends | implements |
|---|---|
用于定義建立實體及參考實體,判斷實體的關鍵字
| new | this | super | instanceof |
|---|---|---|---|
用于例外處理的關鍵字
| try | catch | finally | throw | throws |
|---|---|---|---|---|
用于包的關鍵字
| package | import |
|---|---|
其他修飾符的關鍵字
| native | strictfp | transient | volatile | assert |
|---|---|---|---|---|
1.3 保留字
1.3.1 介紹
Java保留字:現有Java版本尚未使用,但以后版本可能會作為關鍵字使用,自己命名識別符號要避免使用這些保留字byValue、cast、future、generic、inner、operator、outer、rest、var、goto、const,
1.4 鍵盤輸入陳述句
1.4.1 介紹
在編程中,需要接收用戶輸入的資料,就可以使用鍵盤輸入陳述句來獲取,Input.java,需要一個掃描器(物件),就是Scanner,
1.4.2 步驟
1)匯入該類的所在包,java.util.*
2)創建該類物件(宣告物件)
3)呼叫里面的功能
1.4.3 案例演示
要求:可以從控制臺接收用戶資訊,【姓名,年齡,薪水】
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
/*
步驟:
1.匯入Scanner類 所在的包
2.創建Scanner物件,new創建一個物件
3.接收用戶輸入,使用相關方法
*/
Scanner myScanner = new Scanner(System.in);
System.out.println("請輸入姓名:");
String name = myScanner.nextLine();//接收用戶輸入的字串
System.out.println("請輸入年齡:");
int age = myScanner.nextInt();//接收用戶輸入的年齡
System.out.println("請輸入薪水");
double sal = myScanner.nextDouble(); //接收用戶輸入的薪水
System.out.println("人的資訊如下:");
System.out.println("名字=" + name + " 年齡=" + age + " 薪水=" + sal);
}
}
1.5 進制(程式員的基本功)
1.5.1 進制介紹
對于整數,有四種表示方式:
二進制:0,1,滿2進1,以0b或0B開頭,
十進制:0-9,滿10進1
八進制:0-7,滿8進1,以數字0開頭表示,
十六進制:0-9 及 A(10)-F(15),滿16進1,以0x或0X開頭表示,此處的A-F不區分大小寫,
1.5.2 演示四種進制
public class BinaryTest {
public static void main(String[] args) {
//n1 二進制
int n1 = 0b1010;
//n2 十進制
int n2 = 1010;
//n3 八進制
int n3 = 01010;
//n4 十六進制
int n4 = 0x1010;
System.out.println("n1=" + n1);
System.out.println("n2=" + n2);
System.out.println("n3=" + n3);
System.out.println("n4=" + n4);
System.out.println(0x23A);
}
}
1.5.3 進制的圖示
| 十進制 | 十六進制 | 八進制 | 二進制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 2 | 2 | 10 |
| 3 | 3 | 3 | 11 |
| 4 | 4 | 4 | 100 |
| 5 | 5 | 5 | 101 |
| 6 | 6 | 6 | 110 |
| 7 | 7 | 7 | 111 |
| 8 | 8 | 8 | 1000 |
| 9 | 9 | 11 | 1001 |
| 10 | A | 12 | 1010 |
| 11 | B | 13 | 1011 |
| 12 | C | 14 | 1100 |
| 13 | D | 15 | 1101 |
| 14 | E | 16 | 1110 |
| 15 | F | 17 | 1111 |
| 16 | 10 | 20 | 10000 |
| 17 | 11 | 21 | 10001 |
1.5.4 進制的轉換(基本功)
進制轉換的介紹
-
第一組
1)二進制轉十進制
2)八進制轉十進制
3)十六進制轉十進制
-
第二組
1)十進制轉二進制
2)十進制轉八進制
3)十進制轉十六進制
-
第三組
1)二進制轉八進制
2)二進制轉十六進制
-
第四組
1)八進制轉二進制
2)十六進制轉二進制
1.6 其他進制轉十進制
1.6.1 二進制轉十進制
規則:從最低位(右邊)開始,將每個位上的數提取出來,乘以2的(位數-1)次方,然后求和,
案例:請將0b1011轉成十進制的數
0b1011 = 1 * 2? + 1 * 21 + 0 * 22 + 1 * 23 = 1 + 2 + 0 + 8 = 11
1.6.2 八進制轉十進制
規則:從最低位(右邊)開始,將每個位上的數提取出來,乘以8的(位數-1)次方,然后求和,
案例:請將0234轉成十進制的數
0234 = 4 * 8? + 3 * 81 + 2 * 82 = 4 + 24 + 128 = 156
1.6.3 十六進制轉十進制
規則:從最低位(右邊)開始,將每個位上的數提取出來,乘以16的(位數-1)次方,然后求和,
案例:請將 0x23A 轉成十進制的數
0x23A = 10 * 16? + 3 * 161 + 2 * 162 = 10 + 48 + 512 = 570
小練習:請將
0b 1 1000 1100 轉成 十進制
1 * 22 + 1 * 23 + 1 * 2? + 1 * 2? = 256 + 128 + 8 + 4 = 396
0 2456 轉成十進制
6 * 8? + 5 * 81 + 4 * 82 + 2 * 83 = 6 + 40 + 256 + 1024 = 1326
0x A45 轉成十進制
5 * 16? + 4 * 161 + 10 * 162 = 5 + 64 + 2560 = 2629
1.7 十進制轉其他進制
1.7.1 十進制轉二進制
規則:將該數不斷除以2,直到商為0為之,然后將每步得到的余數倒過來,就是對應的二進制,
案例:請將 34 轉成二進制 = 0B00100010

1.7.2 十進制轉八進制
規則:將該數不斷除以 8,直到商為 0 為止,然后將每步得到的余數倒過來,就是對應的八進制,
案例:請將 131 轉成八進制 => 0203

1.7.3 十進制轉十六進制
規則:將該數不斷除以 16,直到商為 0 為止,然后將每步得到的余數倒過來,就是對應的十六進制,
案例:請將 237 轉成十六進制 => 0xED

小練習:
123 轉成 二進制 => 0b 111 1101
678 轉成 八進制 => 0 1246
8912 轉成 十六進制 => 0x 22D0
1.8 二進制轉八、十六進制
1.8.1 二進制轉八進制
規則:從低位開始,將二進制數每三位一組,轉成對應的八進制數即可,
案例:請將 ob11010101 轉成八進制
ob11(3)010(2)101(5) => 0325
1.8.2 二進制轉十六進制
規則:從低位開始,將二進制數每四位一組,轉成對應的十六進制數即可,
案例:請將 ob11010101 轉成十六進制
ob1101(D)0101(5) = 0xD5
課堂練習:請將
0b11100101 轉成 八進制
0b1110010110 轉成 十六進制
1.9 八、十六進制轉二進制
1.9.1 八進制轉二進制
規則:將八進制數每 1 位,轉成對應的一個 3 位的二進制數即可,
案例:請將 0237 轉成二進制
02(010)3(011)7(111) = 0b10011111
1.9.2 十六進制轉二進制
規則:將十六進制數每 1 位,轉成對應的 4 位的一個二進制數即可,
案例:請將 0x23B 轉成二進制
0x2(0010)3(0011)B(1011) = 0b001000111011
課堂練習:請將
01230 轉成 二進制
0xAB29 轉成二進制
1.10 原碼、反碼、補碼(重點 難點)
1.10.1 二進制在運算中的說明
1)二進制是逢2進位的進位制,0、1是基本算符,
2)現代的電子計算機技術全部采用的是二進制,因為它只使用0、1兩個數字符號,非常簡單方便,易于用電子方式實作,計算機內部處理的資訊,都是采用二進制數來表示的,二進制(Binary) 數用0和1兩個數字及其組合來表示任何數,進位規則是"逢2進1",數字1在不同的位上代表不同的值,按從右至左的次序,這個值以二倍遞增,
1.10.2 原碼、反碼、補碼要點
對于有符號的來說:
1)二進制的最高位是符號位:0表示正數,1表示負數(口訣:0->0,1->-[0倒過來還是0,1倒過來變成負數])
2)正數的原碼,反碼,補碼都一樣(三碼合一)
3)負數的反碼 = 原碼符號位不變,其他位按位取反(0變1,1變0)
4)負數的補碼 = 負數的反碼 + 1,負數的反碼 = 負數的補碼 - 1
5)0的反碼,補碼都是0
6)Java沒有無符號數,換言之,Java中的數都是有符號的
7)在計算機運算的時候,都是以補碼的方式來運算的
8)當我們看運算結果的時候,要看他的原碼(重點)
1.12 位運算
1.12.1 簡單思考題
- 請看下面的代碼段,回答 a,b,c,d,e 結果是多少?
public class BitOperator01 {
public static void main(String[] args) {
int a = 1 >> 2; //向右位移2位
int b = -1 >> 2; //算術右移
int c = 1 << 2; //向左位移2位
int d = -1 << 2; //算術左移
int e = 3 >>> 2; //無符號右移
//a,b,c,d,e 結果是多少
System.out.println("a="+a); //0
System.out.println("b="+b); //-1
System.out.println("c="+c); //4
System.out.println("d="+d); //-4
System.out.println("e="+e); //0
}
}
- 請回答在 Java 中,下面的運算式運算的結果是: (位操作)
~2=? // 按位取反
2&3=?// 2 按位與 3
2|3=?
~-5=?
13&7=?
5|4=?
-3^3=?//^ 按位異或
1.12.2 位運算子介紹
Java中有7個位運算(&、|、^、~、>>、<< 和 >>>)

1.12.3 >>、<< 和 >>> 的運算規則
1)算術右移>>:低位溢位,符號位不變,并用符號位補溢位的高位
2)算術右移<<:符號位不變,低位補0
3)>>> 邏輯右移也叫無符號右移,運算規則是: 低位溢位,高位補 0
- 特別說明:沒有 <<< 符號
1.12.4 應用案例 BitOperator01.java
-
int a=1>>2; //1 => 00000001 => 00000000 本質 1 / 2 / 2 =0
-
int c=1<<2; //1 => 00000001 => 00000100 本質 1 * 2 * 2 = 4
1.13 本章作業
一、計算下列運算式的結果
10 / 3 = 3; 10 % 2 = 0;
10 / 5 = 2; -10.5 % 3 = ;
a % b當a是小數時,公式 = a - (int)a / b * b
-10.5 % 3 = -10.5 - (-10) / 3 = -10.5 + 9 = - 1.5
注意:有小數運算,得到結果是近似值
二、試說出下面代碼結果
int i = 66;
System.out.println(++i+i); //執行i=i+1 => i = 67 => 134
三、在Java中,以下賦值陳述句正確的是(CD)
A) int num1=(int)"18";//錯誤應該Integer.parselnt("18");B) int num2=18.0;M/錯誤double -> int
C) double num3=3d;M/ok
D) double num4=8;M/ok int -> doubleE) int i=48; char ch =i+1;1/錯誤int ->char
F) byte b = 19; short s = b+2;//錯誤int ->short
四、試寫出將String轉換成double型別的陳述句,以及將char型別轉換成String的陳述句,舉例說明即可,寫簡單代碼
String str = "18.8"??/注意字串要可以被轉成 doubledouble d1 = Double.parseDouble(str);
char c1 ='韓";
String str2 =c1 + "";
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511034.html
標籤:其他
上一篇:python表白玫瑰花繪制、
