与 或 亦或 取反 右移 无符号右移

// 提取低位的半个字节
  System.out.println("01010101 & 0x00ff 结果为"+(0x55 & 0x0f));
  // 按位或
  // 在socket通信DataInputStream.readUnsignedShort()中用来合并byte
  System.out.println("00001111 | 11110000 结果为:"+(15 | 15 << 4));
  // 按位亦或
  System.out.println("01011100 ^ 11111010 结果为:"+(0x5c ^ 0xfa));// 10100110 oxa6

System.out.println(Integer.toBinaryString(0xaf));
  int a = ((int)0x8a)|((int)0x05);
  System.out.println(Integer.toBinaryString(a)+"\na:"+(-1|a));
  
  System.out.println(Integer.toBinaryString((int)((0x87 - 0x01) ^ 0xff))+"十进制:-"
    + ""+(int)((0x87 - 0x01) ^ 0xff));
  System.out.println(Integer.toBinaryString(1));
  
  // 数值取反
  System.out.println(Integer.toBinaryString(~(9 - 0x00000001 )));
  System.out.println(Integer.toBinaryString(-9));
  
  // 所有整数在内存中均用补码表示
  // 0x8f = 1000 1111 ; 1000中 1为符号位,表示负数 ;
  // 1000 1111 (补码) ---> 1000 1110 (反码) ----> 1111 0001 (原码)
  // 所以 0x8f 表示  -(7*16 + 1) = -113
  System.out.println((byte)0x8f);
  
  short s = (short) 0x80ff;
  // 0x80ff -->  10000000 11111111 (补码,符号位1,表示负数) ---> 10000000 11111110 (反码)
  // ---> 11111111 00000001 (原码) = -(7*16^3 + 15*16^2 +1) = 28672 + 3840 + 1
  System.out.println("0x80ff :\t"+s);
  
  
  // 输出 0xc5 = 1100 0101 符号位为1; 补码11000101-->反码11000100-->原码10111011= -(3*16+11) = -59
  System.out.println("0xc5 :\t"+(byte)0xc5);
  //  符号右移 高位补0,最高位为0
  System.out.println("0xc5>>1:\t"+(byte)(0xc5>>1));
  // 无符号右移 高位补1,最高位为0
  System.out.println(Integer.toBinaryString((((byte)0xc5)>>>1)).length());
  System.out.println((byte)0xc5>>>1);
  //System.out.println(Float.MIN_VALUE);

时间: 2024-10-11 01:36:37

与 或 亦或 取反 右移 无符号右移的相关文章

java右移&gt;&gt; 无符号右移&gt;&gt;&gt;

>>>是无符号右移,在高位补零 >>是带符号的右移,如果是正数则在高位补零,负数则补1 int a = -1; System.out.println(a>>1); System.out.println(a>>>1); -1 2147483647 1111 1111 1111 1111 1111 1111 1111 1111       -1 1111 1111 1111 1111 1111 1111 1111 1111       -1 0111

java 左移&lt;&lt;&amp;&gt;&gt;右移&amp;&gt;&gt;无符号右移

java中右移运算符>>和无符号右移运算符>>>的区别 在做一个pcm音频时遇到了这个符,但是我看有些百度的地方的解释都不能令我很懂,所以就整理下. 首先左移和右移的区别是很好区分的 左移<< :就是该数对应二进制码整体左移,左边超出的部分舍弃,右边补零.举个例子:253的二进制码1111 1101,在经过运算253<<2后得到1111 0100.很简单 右移>> :该数对应的二进制码整体右移,左边的用原有标志位补充,右边超出的部分舍弃.

原码,反码,补码 与(&amp;) 或(|) 非(~) 异或(^) 左移 &lt;&lt; 右移 &gt;&gt; 无符号右移 &gt;&gt;&gt;

原码 数字在计算机中以二进制表示,8位的字长,最高位是符号位, 正数为0,负数为1.比如,3为0000 0011: -3为1000 0011. 注意,Java中int为32位.3的16进制表示为3,-3的16进制为fffffffd. 反码 正数的反码和原码相同. 负数的反码为符合位不变,其余按位取反. 3 为0000 0011: -3为1111 1100. 补码 正数的补码和原码相同. 负数的补码为反码+1. 3 为0000 0011: -3为1111 1101 与(&) 按位与,位数对齐,全部

C语言位运算符:与、或、异或、取反、左移和右移

语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1~ 取反 ~

【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍

转载自:http://www.jb51.net/article/40559.htm,感谢原作者. 以下是对C语言中的位运算符:与.或.异或.取反.左移与右移进行了详细的分析介绍,需要的朋友可以过来参考下 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位

java移位运算符:&lt;&lt;(左移)、&gt;&gt;(带符号右移)和&gt;&gt;&gt;(无符号右移)。

1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 当左移的运算数是int 类型时,每移动1位它的第31位就

javascript 按位或(|),无符号右移(&gt;&gt;&gt;)运算,组合技巧来实现————密码强度提示,四种情况??

直接上代码,原来的代码中,switch中的第一个case,判断之后,少加了个break 跳出判断语句,害得我查了半天,“怎么样式老是不对,不科学啊,呵呵,原来是没跳出case的判断了,还会执行后面的判断!!,哎,嘿嘿,不过后来还是发现了,开心中...” 原文地址:http://www.cnblogs.com/wybztn/archive/2009/11/18/1605285.html 这里还有个重要的设计技巧, 0001, 0010, 0100, 1000各代表一种情况的话,组合起来就有很多种情

java移位运算符实验程序:&amp;lt;&amp;lt;(左移)、&amp;gt;&amp;gt;(带符 号右移)和&amp;gt;&amp;gt;&amp;gt;(无符号右移)

public class txs { static void leftbit(){ int i;               //整型长度为32位                                                                                          //位 int num=0xFFFFFFE;  //1111 1111 1111 1111 1111 1111 1110      //28 for(i=0;i<28;i++

JavaScript中无符号右移赋值操作

无符号右移赋值操作 (>>>=)是对变量值根据表达式值所规定的位数进行无符号右移,并将结果赋给该变量.示例代码: result >>>= expression 其中参数是result任何变量. expression是任何表达式. JavaScript中无符号右移赋值操作说明 使用 >>>= 运算符和使用下面的语句是等效的:health.hljmlyfcyy.com result = result >>> expression >