A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 淡看流光行远 中级黑马   /  2015-1-20 23:27  /  1230 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 淡看流光行远 于 2015-1-26 21:32 编辑

1、~4
        00000000 00000000 00000000 00000100
~ 按位取反,就是针对b这个二进制数据,所有的0变1,1变0。
补码        11111111 11111111 11111111 11111011
反码        11111111 11111111 11111111 11111010
原码        10000000 00000000 00000000 00000101
2、
byte b2 = (byte)130;

        数据:130默认是int类型的十进制数据。

                第一步:十进制的130转换成二进制数据。
                        128 64 32 16 8 4 2 1
                        1   0  0  0  0 0 1 0
                第二步:130在内存中的表示形式,你做了截取
                        00000000 00000000 00000000 10000010
                        
                        截取后的结果是:
                                10000010
                第三步:二进制数据是10000010
                        通过观察,我们发现这是一个负数。

                        原码:1 0000010
                        反码:1 1111101
                        补码:1 1111110
                        
                        最终的结果是:
                                1 1111110
为什么1中显示的是原码?2中显示的是补码?为什么4按位取反后就是补码?

4 个回复

正序浏览
yueye13 来自手机 中级黑马 2015-1-21 21:47:53
报纸
:handshake:handshake:handshake
回复 使用道具 举报
前面的1代表的是正还是负,正数的补码都是他自己的本身,负数的补码是最后一位加1,前面的不变0变1,
回复 使用道具 举报
这些学的懂了就好 概念性的要搞清楚
回复 使用道具 举报
计算机底层度以补码形式运算,算是被人看用的原码,,,,参考一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马