位运算及进制转换(位进制什么意思)

  本篇文章为你整理了位运算及进制转换(位进制什么意思)的详细内容,包含有位数进制转换 位进制什么意思 位和进制 位运算csdn 位运算及进制转换,希望能帮助你了解 位运算及进制转换。

  位运算及进制转换

  目录位运算及进制转换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.java1.13 本章作业

  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语言赋予了特殊含义,用做专门用途的字符串(单词)

  特点:关键字中所有的字母都为小写

  用于定义数据类型的关键字

  
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 进制的图示

  
1.6.1 二进制转十进制

  规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。

  案例:请将0b1011转成十进制的数

  0b1011 = 1 * 2⁰ + 1 * 2¹ + 0 * 2² + 1 * 2³ = 1 + 2 + 0 + 8 = 11

  1.6.2 八进制转十进制

  规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。

  案例:请将0234转成十进制的数

  0234 = 4 * 8⁰ + 3 * 8¹ + 2 * 8² = 4 + 24 + 128 = 156

  1.6.3 十六进制转十进制

  规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。

  案例:请将 0x23A 转成十进制的数

  0x23A = 10 * 16⁰ + 3 * 16¹ + 2 * 16² = 10 + 48 + 512 = 570

  小练习:请将

  0b 1 1000 1100 转成 十进制

  1 * 2² + 1 * 2³ + 1 * 2⁷ + 1 * 2⁸ = 256 + 128 + 8 + 4 = 396

  0 2456 转成十进制

  6 * 8⁰ + 5 * 8¹ + 4 * 8² + 2 * 8³ = 6 + 40 + 256 + 1024 = 1326

  0x A45 转成十进制

  5 * 16⁰ + 4 * 16¹ + 10 * 16² = 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) {

   :右移运算符,将左操作数向右移动(以小数点为分界线),空位以符号位填充(正数用0,负数用1)移位个数由右操作数决定

   :左移运算符,将左操作数向左移动(以小数点为分界线),空位由0来填充。移位个数由右操作数决定

   :无符号右移位运算符 无论是正数还是负数最高位 以0填充新的位置

   //1的原码 00000000 0000000 000000 0000001

   //向右位移2位 00000000 0000000 000000 0000000.01 = 0

   int a = 1 2; //向右位移2位

   //没明白 int b = -1 2;为啥是-1

   int b = -1 2; //向右位移2位

   //1的原码 00000000 0000000 000000 0000001

   //向左位移2位 00 00000000 0000000 000000 0000100 = 4

   int c = 1 2; //向左位移2位

   //-1的原码 10000000 0000000 000000 0000001

   //向左位移2位 10 00000000 0000000 000000 0000100 = -4

   int d = -1 2; //向左位移2位

   //3的原码 00000000 0000000 0000000 00000011

   //无符号右移 00000000 0000000 0000000 00000000.11 = 0

   int e = 3 //无符号右移

   //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 = 1 // 按位取反 

 

   2 3 = 2 // 2按位与3

   23 = 3 // 2按位或3

   ~-5 = 4

   13 7 = 5

   54 = 5

   -3^3 = -2 // ^按位异或

   public class BitOperator02 {

   public static void main(String[] args) {

   //推导

   /* ~运算,1变0,0变1

   1. 先得到-2的原码 10000000 00000000 00000000 00000010

   2. -2的反码 11111111 11111111 11111111 11111101

   3. -2的补码 11111111 11111111 11111111 11111110

   4. ~-2操作 00000000 00000000 00000000 00000001

   5. 运算后的原码是 00000000 00000000 00000000 00000001 = 1

   System.out.println(~-2);//1

   /* 运算,同为1的时候为1,否则为0

   正数的原码、反码、补码相同

   1. 2的补码 00000000 00000000 0000000 00000010

   2. 3的补码 00000000 00000000 0000000 00000011

   3. 运算后 00000000 00000000 0000000 00000010

   4.运算后原码是 00000000 00000000 0000000 00000010 = 2

   System.out.println(2 3);//2

   运算,同为0的时候为0,否则为1

   1. 2的补码 00000000 00000000 0000000 00000010

   2. 3的补码 00000000 00000000 0000000 00000011

   3.运算后 00000000 00000000 0000000 00000011 = 3

   System.out.println(2 3);//3

   ^运算,同为0,异为1

   1. -3的原码 10000000 00000000 0000000 00000011

   2. -3的反码 11111111 11111111 1111111 11111100

   3. -3的补码 11111111 11111111 1111111 11111101

   4. 3的补码 00000000 00000000 0000000 00000011

   5. ^运算后 11111111 11111111 11111111 11111110 符号位为1,运算后结果为负数,还要继续转换

   6.当补码的运算结果为负数之后,先进行取反操作

   00000000 00000000 0000000 00000001 = 1

   7.然后计算结果加1后在前面添加一个负号 - (1+1) = -2

   System.out.println(-3 ^ 3);//-2

  

 

  1.12.2 位运算符介绍

  Java中有7个位运算( 、、^、~、 、 和 )

  1.12.3 、 和 的运算规则

  1)算术右移 :低位溢出,符号位不变,并用符号位补溢出的高位

  2)算术右移 :符号位不变,低位补0

  3) 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0

  特别说明:没有 符号

  1.12.4 应用案例 BitOperator01.java

  
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"

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: