这里我们发现由于byte的符号位的關系,我们不得不采用长度更长的int类型来处理符号位带来的问题因此,我们会觉得byte由于要考虑符号位其范围变小了所以,我们只好通過int来处理在这个类型的转换过程中,任意长度的int类型会截断其高位的字节来适应byte类型因为int类型要比byte类型宽。这也就是为什么一个int的127转換成了byte还是一个127
不过,我们考虑另外一种情况就是当一个int值大过byte表示的数值范围的时候,这个时候问题就出现了比如,int的128转换成一個byte类型会是-128这是因为补码运算的关系造成的。首先128写成16进制是0x,当做int到byte的类型转换的时候前面的0被截断形成0x80。在二进制中0x80可以写成如果这是一个无符号数哪么一切正常,但是如果是一个有符号数就会经过补码运算对于负数而言,其补码运算就是反码(就是1转换成0並且反正既然)加一哪么,的补码就是加一即(十进制)。因此byte0x80事实上表示的也