Java之颜色0xFF补码

byte类型的数字要&0xff再赋值给int类型,byte是一字节,而int类型是4字节,如果不做补码操作,就会导致二进制数据的一致性丢失掉,这个问题的产生的原因和计算机存储数据的方式有关,负数,会取反然后+1存储

基本数据类型

数据类型字节
byte8位二进制(8bit位) = 1个字节
char2个字节
short2个字节
int4个字节
long8个字节
float4个字节
double8个字节

数据的存储

计算机存储数据机制:正数存储的二进制原码,负数存储的是二进制的补码。 补码是负数的绝对值反码加1。

比如-12,-12 的绝对值原码是:0000 1100 取反: 1111 0011 加1: 1111 0100

byte –> int 就是由8位变 32 位 高24位全部补1: 1111 1111 1111 1111 1111 1111 1111 0100 ;

0xFF 是计算机十六进制的表示: 0x就是代表十六进制,A B C D E F 分别代表10 11 12 13 14 15 F就是15 一个F 代表4位二进制:可以看做 是 8 4 2 1。

0xFF的二进制表示就是:1111 1111。 高24位补0:0000 0000 0000 0000 0000 0000 1111 1111;

-12的补码与0xFF 进行与(&)操作 最后就是0000 0000 0000 0000 0000 0000 1111 0100

0xFF补码在java的应用

在JAVA颜色转码上会用到,当然颜色不可能为负数,基本上,不加上0xFF补码,也不会有问题的,但是最好是加上补码,这样保证了二进制的数据不会丢失

比如#0xFF0000 ,在java中转化为INT类型就需要补码写成

// 黑色
private static Integer COLOR_BLACK = 0XFF000000;
// 白色
private static Integer COLOR_WHITE = 0XFFFFFFFF;
// 红色
private static Integer COLOR_RED = 0xFFFF0000;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂飙的yellowcong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值