java运算符,进制转换,原码,反码,补码,

6月17日学习,运算符,标识符,键盘输入,进制,原码,反码,补码

目录

运算符简单描述

4.3进制

4.4进制转换(基本功)

第一组,其它进制转十进制

第二组,十进制转其它进制

第三组,二进制转八、十六进制

第四组,八、十六进制转二进制

4.5原码、反码、补码(重难点)

例子1: 2 & 3 = ?

例子2: ~ - 2 = ?

例子3: ~ 2 = ?

例子4: 1 >> 2 = ?

例子5:1 << 2 = ?


运算符简单描述

  • 算数运算符 ++ ,--,+,-,*,/,% ,浮点数运算结果是一个近似值

    a % b 当 a 是小数时,计算公式:a - (int)a / b *b

    10.5 % 3 = 10.5 - 10 / 3 * 3 = 1.5

  • 赋值运算符 = , += , -= ,*= ,/+ , %=

  • 关系运算符 ==, != , < , > ,<= ,>= 结果返回Boolean

  • 逻辑运算符 &(不断路), &&(短路与) , | (不断路) , ||(短路或), !, ^ (true^false = true,true ^ true = false),结果返回Boolean

  • 位运算符

  • 三元运算符 条件表达式:表达式1?表达式2; 表达式1,表达式2 要为可以赋值给变量的类型。

4.3进制

  • 二进制 0b开头 ,int n1 = 0b1010; //10

  • 十进制

  • 八进制 0开头

  • 十六进制 0X开头

4.4进制转换(基本功)

第一组,其它进制转十进制

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

 

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

 

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


第二组,十进制转其它进制

十进制转二进制:将十进制数不断除于2,直到商为0为止,然后将每步得到的余数倒过来就是2进制。

 

十进制转八进制:将十进制数不断除于8,直到商为0为止,然后将每步得到的余数倒过来就是8进制。

十进制转十六进制:将十进制数不断除于16,直到商为0为止,然后将每步得到的余数倒过来就是16进制。


第三组,二进制转八、十六进制

二进制转八进制:从低位开始,将二进制每3位一组,转成对应的八进制即可

0b11010101 转八 101—>5 ,010 —> 2 , 11—> 3 , 所以八进制为:0325

二进制转十六进制:从低位开始,将二进制每4位一组,转成对应的八进制即可

0b 11010101 转十六 0101—>5, 1101—> D, 所以十六进制为:D5

第四组,八、十六进制转二进制

八进制转二进制:将每1位八进制转换成3位二进制数即可。

0237 转二进制 2—>010, —>011,7—>111,所以二进制为:0b10011111

八进制转二进制:将每1位八进制转换成4位二进制数即可。

0x23B 转二进制 2—>0010,3—>0011, B—>1011, 所以二进制为:0b001000111011

4.5原码、反码、补码(重难点)

原码:原码是一个十进制数按照数据类型得到,比如int a = 2; int是4字节,

那么原码是 00000000 00000000 00000000 00000010, 2是正数,反码,补码也是这个

原码的作用:推出补码。

补码的作用:在计算机运算的时候,都是以补码的方式来运算的

位运算:java中有7个位运算(& , | , ^ , ~ , >> , << 和 >>>)

分别是按位与&、按位或|、按位异或^、按位取反~、他们的运算规律:

  • 按位与& : 两者全为1,结果为1,否则为0。

  • 按位或| : 两者有一个为1,结果为1,否则为0

  • 按位异或^ : 两者一个为0,一个为1,结果为1,否则为0

  • 按位取反~: 0 变 1 , 1 变 0

  • 算数右移 >>:低位溢出,符号位不变,并用符号位补移出的高位

  • 算数左移 <<: 符号位不变,低位补0

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

例子1: 2 & 3 = ?

按位与&运算,1)按数据类型转换成原码,int类型的2 为4字节

int 型 2 的原码 00000000 00000000 00000000 00000010,补码 00000000 00000000 00000000 00000010

int 型 3 的原码 00000000 00000000 00000000 00000011,补码 00000000 00000000 00000000 00000011

2)位运算是根据补码运算,2,3补码对比,两者全为1,结果为1,否则为0。运算后 00000000 00000000 00000000 00000010

3)结果要将按位与的补码转成原码,那就是 00000000 00000000 00000000 00000010, 转成十进制为2

结果:2  &  3  =  2

例子2: ~ - 2 = ?

1)- 2 的原码 : 10000000 00000000 00000000 00000010 ,

2)位运算要根据求出补码,求出负数的补码前要先求出反码

- 2 反码: 11111111 11111111 11111111 11111101 ,3)负数的反码=它的原码符号位不变,其它位取反(0变1,1变0)

- 2 补码: 11111111 11111111 11111111 11111110 , 4)负数的补码=它的反码+1

3) ~ - 2 根据将补码,0 变 1 , 1 变 0 的取反操作 得

00000000 00000000 00000000 00000001,这是个补码,但这是个正数,符号为0

变原码 也是 00000000 00000000 00000000 00000001 , 变十进制就是 1 .

结果:~ - 2 = 1

例子3: ~ 2 = ?

1)2的补码 : 00000000 00000000 00000000 00000010

2)位运算~,取反操作: 11111111 11111111 11111111 11111101

3) 符号位是1,为负数,变回原码先变反码

位运算后的补码变反码 , 负数的反码=负数的补码-1

11111111 11111111 11111111 11111100

负数的反码变原码 , 原码符号位不变,其它位取反

10000000 00000000 00000000 00000011 , 也就是 -3

结果:~  2 = -3

例子4: 1 >> 2 = ?

int型1 右移两位

简单版 1 / 2 /2 =0 即可,处于2次2,(推荐)

变成补码版 1 的补码 00000000 00000000 00000000 00000001,

右移两位,符号位补上两位那就是 00000000 00000000 00000000 00000000.

变成十进制 就是 0

例子5:1 << 2 = ?

int 型的1 左移 2 位

简单版: 1* 2 * 2 = 4 右移2位,乘于 2 个 2,3位乘于 3 个 2

补码版:1 的补码 00000000 00000000 00000000 00000001,

左移两位,低位补0,那就是 00000000 00000000 00000000 00000100

转成十进制 就是 4

背下下面几条原码,反码,补码知识点(必背)

1)二进制的最高位是符号位:0表示正数,1表示负数

2)正数的原码,反码,补码都一样

3)负数的反码=它的原码符号位不变,其它位取反(0变1,1变0)

4)负数的补码=它的反码+1,负数的反码=负数的补码-1

5)0的反码,补码都是0

6)java没有无符号数,换言之,java中的数都是有符号的

7)在计算机运算的时候,都是以补码的方式来运算的 (补码把正数和负数统一起来了)

8)在我们看运算结果的时候,要看他的原码 (重点)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值