本文共 1282 字,大约阅读时间需要 4 分钟。
* @笔记: * 一、二进制 * 1.原码,反码,补码 * (1)二进制最高位是符号位,0表示正数,1表示负数。 * (2)正数的原码,反码,补码都是一样的。 * (3)负数的反码是原码除符号位不变,其他位取反。 * (4)负数的补码 = 负数的反码 + 1. * (5)0的反码和补码都是0。 * (6)java没有无符号数。 * (7)在计算机运算时,都是以补码的方式运算。 * 例: 1-2 = 1+(-2) => 0000 0001 + 1000 0010 (原码)=> 0000 0001 + 1111 1110(补码) * 0000 0001 * + 1111 1110 * = 1111 1111 (补码) => 1000 0001(原码) => -1 * 2.基本运算 * &(按位与),|(按位或),^(按位异或),~(按位取反) * 移位运算符: * >>算数右移:低位溢出,符号位不变,并用符号位补溢出的高位 * <<算数左移:高位溢出,符号位不变,低位补0。 * >>>逻辑右移:低位溢出,高位补0。 **/
package com.shuiyixin1;public class learnJ_002weiyunsuan { /** * @作者:shuiyixin * @日期:2018.01.31 * @内容:位运算,二进制,移位运算符 * */ public static void main(String[] args) { // TODO Auto-generated method stub byte a = 1>>2; //0 //1的补码是0000 0001,右移两位变成:0000 0000,即0 byte b = -1>>2; //-1 //-1的补码是 1111 1111,右移两位变成1111 1111,化为原码得:1000 0001,即-1 byte c = 1<<2; //4 //1的补码是0000 0001,左移两位变成:0000 0100,即4 byte d = -1<<2; //-4 //-1的补码是 1111 1111,左移两位变成1111 1100,化为原码得:1000 0100,即-4 byte e = 1>>>2; //0 //1的补码是0000 0001,右移两位变成:0000 0000,即0 System.out.println("1>>2 = " + a); System.out.println("-1>>2 = " + b); System.out.println("1<<2 = " + c); System.out.println("-1<<2 = " + d); System.out.println("1>>>2 = " + e); System.out.println("1>>2 = " + (~2)); System.out.println("-13>>2 = " + (-13>>2)); }}
转载地址:http://yyyni.baihongyu.com/