java 进制运算_java基本语法之--进制、运算符

进制

对于整数,有四种表示方式:

二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。

十进制:0-9 ,满 10 进 1.

八进制:0-7 ,满 8 进1. 以数字 0 开头表示。

十六进制:0-9 及 A-F,满 16 进1. 以 0x 或 0X开头表示。此处的A-F不区分大小写。

所有数字在计算机底层都以二进制形式存在。

计算机以补码的形式保存所有的整数。

正数的补码与其原码相同;负数的补码是在其反码的末位加1。

原码:直接将一个数值换成二进制数。

反码:是对原码按位取反,只是最高位(符号位)保持不变。

Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位

byte 的范围:-128 ~ 127

f00fcfa44f997bfda6a3c2ebfa625605.png

进制的基本转换

十进制 二进制互转

十进制转成二进制 除以2取余数

二进制转成十进制 乘以2的幂数

c2ed075bb746ca5addcbcdd8e54525b6.png

15 = 1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3

类似的方法,可以进行下面的互转

二进制 八进制互转

二进制 十六进制互转

十进制 八进制互转

十进制 十六进制互转

算术运算符

9062da7896025d743d4f1504edb7ba7a.png

注意:

如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数就另当别论。

对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。 例如:int x=3510;x=x/1000*1000; x的结果是?

“+”除字符串相加功能外,还能把非字符串转换成 字符串.例如:System.out.println("5+5="+5+5); //打印结果是?

赋值运算符

符号:=

扩展赋值运算符: +=, -=, *=, /=, %=

比较运算符(关系运算符)

f7159eed256b9416a93498ac8d5e54ce.png

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

注2:比较运算符“==”不能误写成“=” 。

逻辑运算符

7926c125e488d3a94914302fc03c932a.png

逻辑运算符用于连接布尔型表达式,在Java中不可以写成33 && x<6 。

“&”和“&&”的区别:

单&时,左边无论真假,右边都进行运算;

双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。

和“||”的区别同理,双或时,左边为真,右边不参与运算。

异或( ^ )与或( | )的不同之处是:对于 ^ 而言,当左右都为true时,结果为false。

位运算符

855ededcd1580a6650ec3213ed2916d4.png

d8841e14c970e376f4adbba41d1d5b7c.png

位运算是直接对二进制进行运算

三元运算符

格式:(条件表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;

packagecom.uncleyong;public classTestOperator {public static voidmain(String[] args) {//取模

int r = 10 % 3;

System.out.println(r);//1//自增

int i = 10;//i++: 先取 i 值, 在运算(i = i + 1)

int j = i++;

System.out.println(j);

System.out.println(i);int m = 100;//++m: 先运算(m = m + 1), 后取值

int n = ++m;

System.out.println(n);

System.out.println(m);//+: 字符串相加

String str = "abc";

String str2= "def";

String str3= str + str2; //abcdef

System.out.println(str3);//如果对负数取模,可以把模数负号忽略不记

System.out.println(10 % -3); //1//如果被模的数是负数, 则先对其绝对值进行取模运算, 结果在加上一个负号

System.out.println(-10 % 3); //-1

System.out.println(-10 % -3); //-1//整数之间做除法时,只保留整数部分而舍弃小数部分

int x=3510;

x= x / 1000 * 1000;

System.out.println(x);//3000//+ 除字符串相加功能外,还能把非字符串转换成字符串

String str4 = "1";

System.out.println(str4+ 100); //1100//逻辑运算符

int a = 10;int b = 20;//&: 与 运算符, 当且仅当两边都为真时, 表达式的结果为 true

System.out.println(a > 5 & b < 30); //true

System.out.println(a > 15 & b < 30); //false

System.out.println(a > 5 & b < 20); //false//|: 或 运算符, 当且仅当两边都为假时, 表达式结果为 false

System.out.println(a > 5 | b < 30); //true

System.out.println(a > 15 | b < 3); //false

System.out.println(a > 5 | b < 20); //true//^: 异或 运算符, 当且仅当两边的表达式的结果不同时为 true, 否则为 false

System.out.println(a > 5 ^ b < 30); //false

System.out.println(a > 15 ^ b < 3); //false

System.out.println(a > 5 ^ b < 20); //true//!: 取反 运算符.

System.out.println(!(a > 5)); //false//短路逻辑运算符: &&, ||. 若 短路逻辑运算符前的表达式已经可以确定整个表达式的值,//则不再判断 短路运算符后边的表达式的值

System.out.println(a > 15 && (10 / 0 == 1)); //false//位运算符

int c = 3; //0000 0011//左移运算符

System.out.println(c << 2); //0000 1100 -> 12 3 * (2*2) = 12//右移运算符

System.out.println(c >> 2); //0000 0000 -> 0 3 / (2 * 2) = 0;//无符号右移运算符

int d = -1;

System.out.println(d>> 1); //-1

System.out.println(d >>> 1); //2147483647//& 位运算符

/** 0000 0010

* & 0000 0011

* ___________

* 0000 0010*/System.out.println(2 & 3); //2//三元运算符

String e = d > 3 ? "d > 3" : "d <= 3";

System.out.println(e);//d <= 3//编译不能通过, 因为 : 的两边必须是表达式, 且必须是类型兼容的表达式//d > 3 ? System.out.println("a") : System.out.println("b");

String res= d > 3 ? ">3" : "<=3";

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值