计算机基础(原码补码 负号运算)
作者:互联网
package javabasis;
import org.junit.Test;
public class NO1Symbols {
/*
* 首先介绍 原码 反码 补码 移码的计算 及使用
*
*
* 例:
* -15
*
* 每次除以2取余数
*
* 15 2 7 1
* 7 2 3 1
* 3 2 1 1
* 1 2 0 1
*
* 补齐8位 第一位为符号位,0正数,1负数
* 原码: 10001111 (原码还原 1*2^0 + 1*2^1 + 1*2^2 + 1*2^3 + 0*2^4 = 1 + 2 + 4 + 8 + 0 = 15 符号位为负数)
* 反码: 11110000 (除了符号位,按位取反)
* 补码: 11110001 (反码+1)
* 移码: 01110001 (符号位取反) 一般用于比较大小
*
* 原码+补码=0 一般进行减法计算都是加上减数的补码.
* */
/*
* 一些运算符的使用
* >> <<
* >>>
* &&
* &
* ||
* |
*
* */
@Test
public void test() {
/*
* >> << 转化为2进制后,整体进行移位 00000010(2) 00000100(4), 即为翻倍或者折半
* */
int num1 = 4;
System.out.println(num1 >> 1); //2
System.out.println(num1 >> 2); //1
System.out.println(num1 << 2); //16
int num2 = -4;
System.out.println(num2 >> 1); //-2
System.out.println(num2 >> 2); //-1
System.out.println(num2 << 2); //-16
/*
* >>> 没有<<<
* 作用是忽视符号进行移位
*
* 对于整体进行扩展,负数补1 正数补0
* */
int num3 = 4;
System.out.println(num3 >>> 1); //2
System.out.println(num3 >>> 2); //1
// System.out.println(num3<<<2); 直接报语法错误
int num4 = -4;
System.out.println(num4 >>> 1); //2147483646
System.out.println(num4 >>> 2); //1073741823
/*
*
* && & 区别,是否继续进行后续的运算
*
* || |
* */
boolean b1 = true;
boolean b2 = true;
/* boolean result1 = (b1 = (1 == 2)) && (b2 = (1 == 2));
System.out.println(b1 + " " + b2 + " " + result1);
//false true false 由于(b1 = (1 == 2))先进行运算,已经判断false,(b2 = (1 == 2));不会继续运算*/
/* boolean result1 = (b1 = (1 == 2)) & (b2 = (1 == 2));
System.out.println(b1 + " " + b2 + " " + result1);
//false false false 前后都会进行运算*/
/* boolean result1 = (b1 = (1 == 1)) || (b2 = (1 == 2));
System.out.println(b1 + " " + b2 + " " + result1);
//true true true 由于(b1 = (1 == 1))先进行运算,已经判断false,(b2 = (1 == 2));不会继续运算*/
/* boolean result1 = (b1 = (1 == 1)) | (b2 = (1 == 2));
System.out.println(b1 + " " + b2 + " " + result1);
//true false true 前后都会运算*/
}
}
标签:false,负号,补码,System,b1,b2,println,原码,out 来源: https://www.cnblogs.com/yaoxublog/p/10940042.html