位运算详解

一.原码 & 反码 & 补码:

对于有符号而言:
1.二进制数的最高位是符号位:0==正数;1 ==负数
2.正数的原码、反码、补码一致;
3.负数的反码 = 符号位不变,其他位取反
4.负数的补码 = 负数的反码+1
5.0的反码、补码都是0
6.Java中的数都是有符号的
7.计算机运算时都是以补码 的形式来运算的
8.当我们看运算结果时,必须看原码
9.补码的补码就是原码。

二、位运算

1.其他进制的数字转成二进制究竟有多少位?

二进制数有多少位是根据字节数来转化的
比如,整数的默认是int型,占4字节,那么它的二进制位数就有32位。


2.运算中的类型转换到底有哪几个过程?

1.位运算也是运算的一种,不同类型的数字进行运算之前会先进行类型转换:
(1)有强转就遵循强转;
(2)没有强转就自动类型转换——自动转成同一的高容量。比如int型和long型运算,就会先统一转成long型。

------------------------------------>byte,short,char> int> long> float> double

2.对操作数进行类型转化之后,然后才是运算。

3.运算之后是生成运算结果,这个过程中也会有一次类型转换。
(1)如果运算结果是赋给另一个变量,那么按照该变量的类型转化。
(2)如果没有赋给另一个变量,那么按照以下规则:
    i.整型:有一个为long, 则结果也为long;
                 没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
    ii.浮点型:一个为double, 则结果为double.
                     只有两个操作数都是float, 则结果才为float.

【小结】运算的过程中一共会进行2次类型转换。


3.不同长度的整型进行位运算

众所周知,浮点数不能进行位运算。

如果两个不同长度的整型进行位运算时,系统会将二者按右端对齐,然后进行位运算
1.右端对齐
2.(1)短的如果是正数,高位补0;
            短的如果是负数,高位补1;
3.再进行运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值