java中的移位运算符与正负数转换

移位

java 中有对 二进制移动分为 左移(<<) 和右移(>>)

其中右移还分为 有符号右移(>>) 和无符号右移(>>>)

1.有符号右移:将二进制向右移动 如果原来符号位为0 则新符号位也用0 否则用1;

2.无符号右移:将二进制向右移动 不管原来的符号位是0还是1 一律用0 补位;

正负数转换

举个例子:

3的二进制 用一个字节表示

0000 0011

正常一个负数的变现方式是:其正数按位取反再加1

0000 0011

取反:1111 1100

加一:1111 1101(这就是-3的二进制表现形式)

但有更快捷的转换方法:

二进制从左向右看  最后一个 1不变,其余全部取反

0000 0011 (3)

1111 1101 (-3)

后补知识:

一个byte类型负数转换为整型时 其他的24位均用1 来填充, 正数则用0来填充. 如果想让负数也使用0来填充,就得先用这个负数与0xFF相与 再转换为int类型就ok了

时间: 2024-10-03 23:29:04

java中的移位运算符与正负数转换的相关文章

java中的移位运算符

java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >> 1,相当于num除以2 >>>    :     无符号右移,忽略符号位,空位都以0补齐 int number = -1; //原始数二进制 printInfo(number); number = number << 1; //左移一位 printInfo(number)

java中的移位运算符:&lt;&lt;,&gt;&gt;,&gt;&gt;&gt;总结

java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >> 1,相当于num除以2 >>>    :     无符号右移,忽略符号位,空位都以0补齐 下面来看看这些移位运算都是怎样使用的 1 /** 2 * 3 */ 4 package com.b510.test; 5 6 /** 7 * @author Jone Hongten 8 * @

java中关于移位运算符的demo与总结

首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0填充,多余位舍弃.(等同于乘2的n次方) >> 右移运算符,二进制数据向右移动*位,就在其二进制数据后抹掉几位?(这里还不错定,但个人理解是这样的)(等同于除2的n次方) >>> 无符号右移运算符,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充. 下面我们借一个

java中有三种移位运算符

<<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >> 1,相当于num除以2 >>>    :     无符号右移,忽略符号位,空位都以0补齐

Java 中的instanceof 运算符

Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:result = object instanceof class参数:Result:布尔类型.Object:必选项.任意对象表达式.Class:必选项.任意已定义的对象类.说明:如果 object 是 class 的一个实例,则 instanceof 运算符返回 true.如果 object 不是指定类的一

Java基础---Java中的比较运算符(十三)

Java中的比较运算符 比较运算符用于判断两个数据的大小,例如:大于.等于.不等于.比较的结果是一个布尔值( true 或 false ). Java 中常用的比较运算符如下表所示: 注意哦: 1.  > . < . >= . <= 只支持左右两边操作数是数值类型 2.  == . != 两边的操作数既可以是数值类型,也可以是引用类型 代码: public class HelloWorld{    public static void main(String[] args) {  

【转】java中byte数组与int类型的转换(两种方式)----不错

原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 第一种方法: public static byte[] int2byte(int

java中byte数组与int类型的转换(两种方式)

java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. 方法一 /** * int到byte[] * @param i * @return */ public static byte[] intToByteArray(int i) { byte[] resu

java中的基本运算符、取余、逻辑运算符、逻辑运算符、位运算符、移位运算符

注意事项: 常量在编译的时候会赋值,变量在运行的时候才在内存中分配空间赋值. 赋值运算符 += -+ *+ %= \= 在java编译器会进行强制类型转换 取余: 在java中做取余运算的是时候,结果的正负号是取决于被除数. 逻辑运算符&且 |或 !非 ^异或 &&短路与 ||短路或 位运算符:直接操作二进制位的. & (与) 6 & 3 = 2 0000 0110 可以把1看成true & 0000 0011 0看成false --------------