java运算符
Posted 何山123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java运算符相关的知识,希望对你有一定的参考价值。
Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)、左移(<<)、右移(>>)
/******************************************** * java运算符 */ public class BasicOperating { /** * “&”与运算符,只有两个位都是1,结果才是1 * 129,转换成二进制就是10000001, * 128,转换成二进制就是10000000。 * 结果10000000 */ public static void and (){ System.out.print("129、128的与\\"&\\"操作结果为:"); System.out.println(i&j); } /** * “|”或运算符,两个位只要有一个为1,那么结果就是1,否则就为0 * 129,转换成二进制就是10000001, * 128,转换成二进制就是10000000。 * 结果10000001 */ public static void or (){ System.out.print("129、128的或\\"|\\"操作结果为:"); System.out.println(i|j); } /** * “~”非运算符,如果位为0,结果是1,如果位为1,结果是0 * 129,转换成二进制就是10000001, * 结果01111110 */ public static void no (){ System.out.print("129、128的非\\"~\\"操作结果为:"); System.out.println(~i); } /** * “^”异或运算符,相同则结果为0,不同则结果为1 * 129,转换成二进制就是10000001, * 128,转换成二进制就是10000000。 * 结果00000001 */ public static void no_or (){ System.out.print("129、128的异或\\"^\\"操作结果为:"); System.out.println(j^i); } /** * “<<”左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) * 129,转换成二进制就是10000001, * 结果10000001000 */ public static void left_transf (){ System.out.print("129左移3位\\"<<\\"操作结果为:"); System.out.println(i<<3); } /** * “>>” 有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. * 129,转换成二进制就是10000001, * 结果10000 */ public static void right_transf (){ System.out.print("129右移3位\\">>\\"操作结果为:"); System.out.println(i>>3); //16 } /** * “>>>” "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. * 129,转换成二进制就是10000001, * 结果10000 */ public static void right_noCode_transf (){ System.out.println("129右移3位\\">>>\\"操作结果为:"); System.out.println(Integer.toBinaryString(i));//10000001 System.out.println(Integer.toBinaryString(i>>>3));//10000 System.out.println(i>>>3);//16 } public static int i = 129 ; public static int j = 128 ; public static void main(String[] args) { and(); or(); no(); no_or(); left_transf(); right_transf(); right_noCode_transf(); } }
/********************************************
* java运算符
*/
public class BasicOperating {
/**
* “&”与运算符,只有两个位都是1,结果才是1
* 129,转换成二进制就是10000001,
* 128,转换成二进制就是10000000。
* 结果10000000
*/
public static void and (){
System.out.print("129、128的与\\"&\\"操作结果为:");
System.out.println(i&j);
}
/**
* “|”或运算符,两个位只要有一个为1,那么结果就是1,否则就为0
* 129,转换成二进制就是10000001,
* 128,转换成二进制就是10000000。
* 结果10000001
*/
public static void or (){
System.out.print("129、128的或\\"|\\"操作结果为:");
System.out.println(i|j);
}
/**
* “~”非运算符,如果位为0,结果是1,如果位为1,结果是0
* 129,转换成二进制就是10000001,
* 结果01111110
*/
public static void no (){
System.out.print("129、128的非\\"~\\"操作结果为:");
System.out.println(~i);
}
/**
* “^”异或运算符,相同则结果为0,不同则结果为1
* 129,转换成二进制就是10000001,
* 128,转换成二进制就是10000000。
* 结果00000001
*/
public static void no_or (){
System.out.print("129、128的异或\\"^\\"操作结果为:");
System.out.println(j^i);
}
/**
* “<<”左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)
* 129,转换成二进制就是10000001,
* 结果10000001000
*/
public static void left_transf (){
System.out.print("129左移3位\\"<<\\"操作结果为:");
System.out.println(i<<3);
}
/**
* “>>” 有符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1.
* 129,转换成二进制就是10000001,
* 结果10000
*/
public static void right_transf (){
System.out.print("129右移3位\\">>\\"操作结果为:");
System.out.println(i>>3); //16
}
/**
* “>>>” "无符号"右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0.
* 129,转换成二进制就是10000001,
* 结果10000
*/
public static void right_noCode_transf (){
System.out.println("129右移3位\\">>>\\"操作结果为:");
System.out.println(Integer.toBinaryString(i));//10000001
System.out.println(Integer.toBinaryString(i>>>3));//10000
System.out.println(i>>>3);//16
}
public static int i = 129 ;
public static int j = 128 ;
public static void main(String[] args) {
and();
or();
no();
no_or();
left_transf();
right_transf();
right_noCode_transf();
}
}
以上是关于java运算符的主要内容,如果未能解决你的问题,请参考以下文章