1. 有符号右移 >> 有符号右移: 右移之后, 左边的补上符号位, 正数补0, 负数补1。 2. 无符号右移 >>> 无符号右移: 右移之后, 无论该数是正数还是负数, 右移之后左边都是补上0。 3. 左移 << 左移不区分有符号和无符号, 都是左移之后右边补上0, 最左边的符号位也直接移走。 4. 代码验证 ...
publicstaticvoidmain(String[]args){long l=100L;//如果不是最大值 前面都是0 输出的时候就不会有那么长了(所以下面使用最大/最小值示例)System.out.println(Long.toBinaryString(l));//1100100System.out.println(Long.toBinaryString(l).length());//7System.out.println("---");l=Long.MAX_VALUE;...
如这表示订单流水号,这里可以表示订单类型* 最大值:30(11110) 占5位* @param longParam 长参数,一般用于记录id参数什么的,比如是订单的话,这里可以表示商户ID(商户一般不会非常多吧)* 最大值:999999999(101111101011110000011111111) 占30位 表示9.999亿的数据 相信作为id的话,一般都超不过这个数值吧* @return 流...
>>:右移运算符,num>>1,相当于num/2; >>>:无符号右移,忽略符号位,空位以0补齐。 位运算的一些规则: 1.byte、short、char在做移位运算之前,会被自动转换为int类型,然后再进行运算。 2.byte、short、int、char类型的数据经过移位运算后结果都为int型。 3.long经过移位运算后结果为long型。 4.在左移位(<...
计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码,补码=反码+1。在二进制里,是用 0 和 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。 在Java 中声明两个 int 类型的变量: inta=9;intb=-9;那么 a 在计算机中的二进制形式则是:000000000000000000000000000010...
位运算符 与(&)、非(~)、或(|)、异或(^)、移位(左移<<,右移>>,>>> 无符号右移) &:双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64; ...
带符号右移运算符(>>) 运算规则:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。 右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商哈,余数就不要了 无符号右移运算符(>>>)
阿里云为您提供专业及时的Java位运算异或左移右移无符号的相关问题及解决方案,解决您最关心的Java位运算异或左移右移无符号内容,并提供7x24小时售后支持,点击官网了解更多内容。
简介:聊聊Java中的位运算:与、或、非、异或、左移、右移、无符号右移【小家Java】(中) ~:按位非 操作规则:全部的0置为1,1置为0。 public static void main(String[] args) {// 2 -> 10(其实是00000000000000000000000000000010 共32位)// 非后结果: 11111111111111111111111111111101 共32位System.out.print...
聊聊Java中的位运算:与、或、非、异或、左移、右移、无符号右移【小家Java】,提及位运算,相信对绝大多数Java程序员是感觉既陌生又熟悉的。陌生是因为你大概率没有去真实的使用过,熟悉是有时在看些开源框架(或者JDK源码)时会时长看到有使用的地方(譬如Jackson/Fastjso