Java-Can';编辑字节数组内容?
发生了什么?引用Java语言规范,章节: 整数类型的值是以下范围内的整数:对于Java-Can';编辑字节数组内容?,java,arrays,casting,byte,Java,Arrays,Casting,Byte,发生了什么?引用Java语言规范,章节: 整数类型的值是以下范围内的整数:对于字节,从-128到127,包括-128到127 因此,-69+256=187=0x000000BB强制转换为字节的值是0xBB=-69字节只有8位,所以只能保存2^8=256个值。它是用java签名的,因此值的范围为[-128127],包括在内。Abyte可以容纳256个不同的网络值。如果添加256,则字节溢出,结果保持不变。 在java中,范围是[-128127]。一个字节的范围在-128到127(-2^7到2^7-
字节
,从-128到127,包括-128到127
因此,
-69+256=187=0x000000BB
强制转换为字节的值是0xBB=-69
字节只有8位,所以只能保存2^8=256个值。它是用java签名的,因此值的范围为[-128127],包括在内。Abyte
可以容纳256个不同的网络值。如果添加256,则字节溢出,结果保持不变。
在java中,范围是[-128127]。一个字节的范围在-128到127(-2^7到2^7-1)之间,加上256,就像做360度旋转一样。将代码和中的256更改为128将显示不同的结果一个字节可以容纳不同的值
256,因此当您添加256时,您将进行8次Rol(向左旋转)
,返回与前面相同的值
如果您希望在69
中转换-69
,为什么不制作stuffA[x]*=-1
如果确实要反转位,可以使用补码运算符(~
),stuffA[x]=(字节)~stuffA[x]
,但由于two的补码形式
,要获得与previos相同的数字,您需要添加1
比如stuffA[x]=(字节)(~stuffA[x])+1)代码>字节为8位,整数为32位
基本上看比特:
字节b=-37相当于219(int),其二进制为:
Somethin be up yo!
This number be negative! -69
I added 256 and now stuff is positive yo! -69
Somethin be up yo!
This number be negative! -96
I added 256 and now stuff is positive yo! -96
Somethin be up yo!
This number be negative! -13
I added 256 and now stuff is positive yo! -13
Somethin be up yo!
This number be negative! -37
I added 256 and now stuff is positive yo! -37
int 256:
0000 0000 0000 1101 1011
两者相加将得到475的int值:
0000 0000 0001 0000 0000
现在将其转换为字节,即取LSB 8位:
0000 0000 0001 1101 1011
也就是-37
希望这能解释您认为一个字节中可以存储的值的范围是多少?
0000 0000 0001 1101 1011
1101 1011