변위 연산 자
6473 단어 연산 자
package com.lgf.operation;
/**
* ( char ) 。
* , 。Java 2 (two’s complement )
* , ( 1 0, 0 1), 1。
* ,-42 42 , 00101010 11010101 , 1, 11010110 , -42 。
* , , 1。
* -42, 11010110 00101001 , 41, 1, 42。
* @author lgf
*
*/
public class BitwiseOperators {
public static void main(String[] args) {
bitwiseNot();
bitwiseAnd();
bitwiseOr();
bitwiseXOR();
leftShiftOperator();
rightShiftOperator();
rightUnsignedShiftOperator();
}
/**
* ~ (NOT)( )
* , NOT“~” 。
*/
public static void bitwiseNot(){
int x = 42; // x = 00000000000000000000000000101010
int y = ~x; // y = 11111111111111111111111111010101 = -43
x = -42; // x = 11111111111111111111111111010110
y = ~x; // y = 00000000000000000000000000101001 = 41
}
/**
* & (AND)
* “&”, 1, 1。 , 。
*/
public static void bitwiseAnd(){
int x = 44; // x = 0101100
int y = 99; // y = 1100011
int z = x & y; // z = 0100000 = 1 * 2^5 = 32
x = - 44; // x = 11111111111111111111111111010100
y = 99; // y = 00000000000000000000000001100011
z = x & y; // z = 00000000000000000000000001000000 = 1 * 2^6 = 64
}
/**
* | (OR)
* “|”, 1, 1
*/
public static void bitwiseOr(){
int x = 44; // x = 0101100
int y = 99; // y = 1100011
int z = x | y; // z = 1101111 = 111
x = - 44; // x = 11111111111111111111111111010100
y = 99; // y = 00000000000000000000000001100011
z = x | y; // z = 11111111111111111111111111110111 = -9
}
/**
* ^ (XOR)
* " ^ ",
* 1, 1。
* , 。
*/
public static void bitwiseXOR(){
int x = 44; // x = 0101100
int y = 99; // y = 1100011
int z = x ^ y; // z = 1001111 = 79
x = - 44; // x = 11111111111111111111111111010100
y = 99; // y = 00000000000000000000000001100011
z = x ^ y; // z = 11111111111111111111111110110111 = -73
}
/**
* << 。
* : value << num
* num value 。 , << num 。
* , ( ), 0 。
* int , 1 31 ;
* long , 1 63 。
*
* byte short , 。
* Java , int ,
* , int 。 byte short int ,
* 31 , 。
* , byte short , int , 。
* , 1 。 , , 。
* byte 。 :
*/
public static void leftShiftOperator(){
int x = 11; // x = 1011
int y = x << 3; // y = 1011000
x = -11; //x = 11111111111111111111111111110101
y = x << 3; //y = 11111111111111111111111110101000
byte i = 64; // i = 001000000 64
int j = i << 2; // j = 100000000 256
byte z = (byte)(i << 2); // z = 00000000 0
int num = 0xFFFFFFE; // num = 00001111111111111111111111111110
//i = 0 num=00011111111111111111111111111100 536870908
for(i=0; i<5; i++) { //i = 1 num = 00111111111111111111111111111000 1073741816
num = num << 1; //i = 2 num = 01111111111111111111111111110000 2147483632
//printBinary(num); //i = 3 num = 11111111111111111111111111100000 -32
} // i = 4 num = 11111111111111111111111111000000 -64
num = -0xFFFFFFE; // num = 11110000000000000000000000000010 -268435454
// i = 0 num = 11100000000000000000000000000100 -536870908
for(i=0; i<5; i++) { // i = 1 num = 11000000000000000000000000001000 -1073741816
num = num << 1; // i = 2 num = 10000000000000000000000000010000 -2147483632
//printBinary(num); // i = 3 num = 00000000000000000000000000100000 32
} // i = 4 num = 00000000000000000000000001000000 64
}
/**
* >> 。
* : value >> num ,
* num value 。
* , >> num
*
* , ( ) 。
* , , 1,
* , 0,
* ( )(sign extension ),
*/
public static void rightShiftOperator(){
int x = 35; // x = 100011 35
int y = x >> 2; // y = 1000 8
x = 32; // x = 100000
y = x >> 2; // y = 1000 8
x = -32; // x = 11111111111111111111111111100000 -32
y = x >> 2; // y = 11111111111111111111111111111000 -8
x = -1; // x = 11111111111111111111111111111111
y = x >> 2; // y = 11111111111111111111111111111111
}
/**
* >>>
* , ( ) 0。
* (unsigned shift )。
* Java >>> , 0。
*/
public static void rightUnsignedShiftOperator(){
int x = 35; // x = 100011 35
int y = x >>> 2; // y = 1000 8
x = 32; // x = 100000
y = x >>> 2; // y = 1000 8
x = -32; // x = 11111111111111111111111111100000 -32
y = x >>> 2; // y = 00111111111111111111111111111000 1073741816
x = -1; // x = 11111111111111111111111111111111
y = x >>> 2; // y = 00111111111111111111111111111111 1073741823
printBinary(y);
}
public static void printBinary(int i){
System.out.println(" " + i + " : " + Integer.toBinaryString(i) + " :" + Integer.toBinaryString(i).length() + " ");
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정규 표현 식 (3) 의 연산 자 우선 순위정규 표현 식 - 연산 자 우선 순위 정규 표현 식 은 왼쪽 에서 오른쪽으로 계산 하고 우선 순위 순 서 를 따 르 며 산술 표현 식 과 매우 유사 합 니 다. 같은 우선 순위 의 왼쪽 에서 오른쪽으로 연산 을 하고...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.