int是32位有符号,byte是8位有符号。int 257==>00000000 00000000 00000001 00000001
byte b==>00000001==>1(转换后保留后8位)
int 256==>00000000 00000000 00000001 00000000
byte b==>00000000==>0(转换后保留后8位)
int 130==>00000000 00000000 00000000 10000010
byte b==>10000010==>-126(首位为0表负数,补码表示)
byte b==>00000001==>1(转换后保留后8位)
int 256==>00000000 00000000 00000001 00000000
byte b==>00000000==>0(转换后保留后8位)
int 130==>00000000 00000000 00000000 10000010
byte b==>10000010==>-126(首位为0表负数,补码表示)
如果i = -100;
int -100==>10000000 00000000 00000000 01100100 (保留后8位)
byet b==>01100100 ==>100
为什么却是-100呢?
(System.out.println(Integer.toBinaryString(-100));)
byet b==>10011100 ==>-100byte表数范围+127 --- -128内的数可从int正常转换
你-100的表示有误,int里负数也是用补码表示的
int -100==>11111111 11111111 11111111 10011100
byte b ==>10011100 ==>-100