为什么byte的取值范围是-128到127
2016-03-25 16:35
387 查看
本文摘自:http://bbs.itheima.com/thread-280678-1-1.html
-128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
其实,1111 1111表示的是-1,而不是-128;
首先,因为要表示出负数,所以它的最高位是符号位。0表示正数,1表示负数;如:
127是0111 1111这样表示的。
-128是1000 0000这样表示的。
127后面是-128,最大的正数加下来是最小的负数。这就跟钟表一样,12点钟后面是1点中钟一样。
因为它是用补码的编码方式。
(下面的看不懂可以直接跳过,或者百度了解之后再看)
正数的补码就是它的原码,也就是单纯的二进制数。负数的话,看下面例子:
1111 1111这个二进制串,首先它最高位是1,明确他是个负数。
那么其余位是111 1111,按位取反得到:000 0000,再加1就是:000 0001
也就是1,再加上符号位。最终结果是-1
-128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
其实,1111 1111表示的是-1,而不是-128;
首先,因为要表示出负数,所以它的最高位是符号位。0表示正数,1表示负数;如:
127是0111 1111这样表示的。
-128是1000 0000这样表示的。
127后面是-128,最大的正数加下来是最小的负数。这就跟钟表一样,12点钟后面是1点中钟一样。
因为它是用补码的编码方式。
(下面的看不懂可以直接跳过,或者百度了解之后再看)
正数的补码就是它的原码,也就是单纯的二进制数。负数的话,看下面例子:
1111 1111这个二进制串,首先它最高位是1,明确他是个负数。
那么其余位是111 1111,按位取反得到:000 0000,再加1就是:000 0001
也就是1,再加上符号位。最终结果是-1
相关文章推荐
- Mac下为mysql配置环境变量
- 【资源汇集.转】来自西弗吉利亚大学li xin整理的CV代码合集
- 小白笔记--------------linux下的cp命令
- ubuntu 安装Matlab 解决显示中文乱码
- Java内存与垃圾回收调优
- 返回整数数组最大子数组和
- [How to] 真机调试
- java 转码
- Java实现过滤中文乱码
- linux的ip地址排序
- ios学习总结(2) -- UIButton的使用
- 浅析spring中注解的运行
- 63.保留小数位数和精确数字(NSDecimalNumber/NSDecimalNumberHandler)
- jQuery操作HTM元素的常见事件
- SetWindowLong 用法总结
- 利用webstrom的宏,保存文件自动格式化代码
- 四大组件之ContentProvider
- react-native开源组件react-native-wechat学习
- 《内核设计与实现》第十八章读书笔记
- bzoj2467 生成树 Matrix-tree定理