Java位操作|数值的二进制存储

Java位操作

虽然应用场景不多,但是一些源码里却出现了很多次。并非没有用。
在计算机中,所有数值都是 二进制数值。

byte    1个字节    8位
short    2个字节    16位
int        4个字节
long       8个字节

float    4个字节
double    8个字节

char 1个字节

boolean    1位

操作对象

数值
在计算机中所有数都是以补码形式存储,
正数最高位 0,
负数最高位 1,
正数三码合一,
负数原码、反码、补码 分别应:
对应正数最高位变1、最高位外 所有位取反、补(加)1

原码

一个数字转换成二进制就是它的原码,如:

int a=5;
//0000 0000 0000 0000
//0000 0000 0000 0101   

-5 即在 5最高位用1
//1000 0000 0000 0000
//0000 0000 0000 0101

反码

分两种情况,正数反码即是原码,负数是 符号位不变的基础上 其他位取反。

补码

也分两种情况,正数补码即原码,负数补码是 反码加1。

操作符

&    与运算符
从低到高对应,都是1 则是 1,其他都是 0

|    或运算符
有一个1 就是 1,否则 0

~     取反
对每一位进行操作,1变 0 ,0 变1

^    异或运算符
两个操作位 不一样是 1,一样是 0

>> 右移运算符
a>>b
将数值a的二进制数 向右 移 b位,高位空出来的补零

a<<b     左移运算符
向左移b位,空出来的低位 补零

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值