我们都知道,数据在内存中是以二进制的形式存在的,参加运算的是二进制数据的补码。先介绍一下关于二进制码的几种码
1原码 即是我们十进制的数转换为二进制数的原始数据
比如 128 ---- 原码 10000000
2 反码 规则是这样的 一个二进制数的最高位是符号位,0 代表正数,反码和补码都是它本身,1代表负数, 反码是符号位不变其他位0变1,1变0.】
128 ---- 反码 11111111
3 补码 反码减一则是补码
128 ----- 补码 11111110
说一个例子,int a=(byte)200; 输出啊,会是多少?
200 是默认是int 型 00000000 00000000 00000000 11001000
强转后变为补码 11001000
原码是符号位不变,所有按位取反, 10110111
最高位 1 说明是负数,符号位不变,剩余的位数加一则是反码 10111000
结果是-56。 有疑问的可以上来讨论
所以结果是-54
|
|