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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周建 黑马帝   /  2012-3-19 12:54  /  2177 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte a=-1,b=255;a和b的2进制都是11111111;在2进制的取反课程中说,首位为1的是负数,那么255的2进制又要怎么表示,虚心求教,那位高手能指点一下啊

5 个回复

倒序浏览
255的二进制表示00000000 00000000 00000000 11111111
回复 使用道具 举报
java里面没无符号数,所以byte 一字节的范围是  -128~127
最高有效位以补码表示
在这里11111111 就是  -1了

255是正数 最高有效位应该是0 所以byte里面是存不下的
回复 使用道具 举报
1.二进制的最高位是符号位,0表示正数,1表示负数
2.正数的原码,反码,补码都一样
3.负数的反码=它的原码符号位不变,其它位取反
4.负数的补码=它的反码+1
5.零的反码,补码都是0
6.位运算都是用补码进行运算
-1
原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111
255
原码反码补码相同
      0000 0000 0000 0000 0000 0000 1111 1111
补码对应的就是二进制
按这个规律二进制就不会错了
回复 使用道具 举报
首先byte类型的数据是一个字节,8位二进制大小,范围是在-128~127之间,是存放不了255的
而负数的二进制表示是由该负数去掉负号之后取反加1得到,则用byte声明-1,表示为二进制是 11111111,
而你定义255时,只能用 short 或者 int 等表示范围更大的,例如用 int 来声明 255,是4个字节也就是32位二进制数表示,即是:00000000 00000000 00000000 11111111,一般来说我们写出来是省略前面的0不写的,但是在计算机的内存中是有着前面的0的
回复 使用道具 举报
谢谢各位,我明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马