原码补码反码——复习
来源:互联网 发布:淘宝类目搜索排名 编辑:程序博客网 时间:2024/05/19 19:57
基本概念
- 原码
指二进制数据,常见文件中的010101010…..
原码:可直观反映出数据的大小。
- 反码
在原码的基础上:符号位不变,其他位取反
- 补码
在反码的基础上符号位不变,和1做加法
- 说明: 原码 一般是机器码(同样的原码,在有符号和无符号时表示的10进制数不一样)
- 原:00101011 反码:01010100 补码:0 1010101
* - byte 转 成int 类型翻译的值 是改byte字节的对应的补码
* byte 原码是:1111-1111 对应的反码:1000-0000 对应的补码:1000 0001 补码对应的10进制值(也就是int值)是-1
Java中的体现
数值一般用补码表示
1 int = 4 byte
int -> byte ->int
byte b = 0;// 16 进制 ff = 10 进制255 for ( int i = 0; i <= 0xff; ++i ) { b = (byte)i;// 去int的最低4位 System.out.print(" "+i+":"+b+", "); }
为什么会出现 179:-77 这样的结果?
int 类型的 179 对应的原码是:[00000000..00000]10110011
转换成 byte 类型对应的原码是:10110011
将 byte转成int 类型的时候需要先将byte 换算成相应的数值,这里需要求其补码: [11001100]反 ,[11001101]补码
11001101 这个补码对应的有符号值是 - 77 这也是为什么会是这个结果
将正数425 进行int -> byte->int转换,结果是-87
// b = (byte) 425;// 1 1010 1001(u 169) 原码 // 反:1101 0110 补:11010111// System.out.println("byte"+b); //(-87)1101 0111
Java 中读取二进制文件遇到的问题
字节byte为 1111 1111 在转为Int 类型的时候值会变成 -1
11111111 11111111 11111111 11111111 (=0xFF)
00000000 00000000 00000000 11111111 (byte)
&
0xff
InputStreamReader.java public synchronized int read() throws IOException { if (pos >= count) { fill(); if (pos >= count) return -1; } return getBufIfOpen()[pos++] & 0xff; }
阅读全文
0 0
- 原码补码反码——复习
- 复习一下原码,反码,补码
- 原码,反码和补码(复习)
- 关于原码, 反码, 补码的复习
- 原码反码补码&循环&递归复习
- 计算机系统——原码反码补码
- 整数表示—补码、原码、反码
- 二级制—原码、反码、补码
- 171220—原码、反码、补码
- 详解原码、反码、补码——深入理解补码
- 详解原码、反码、补码——深入理解补码
- 原码、反码、补码
- 原码-反码-补码
- 原码、反码、补码
- 原码、反码、补码
- 原码,反码,补码
- 原码、反码、补码
- 原码、反码、补码
- 基本的增删改查
- 今日小程序推荐:查名宝-取好名,创好业!
- 已有项目依赖cordovaLib打包后调用插件崩溃问题
- js遍历树算出树的深度
- RabbitMQ的权限设置
- 原码补码反码——复习
- python 列出目录下的文件
- 应用间的相互跳转
- 深入理解操作系统原理之Windows进程管理
- Vue1.0学习总结(1)———指令、事件、绑定属性、模板、过滤器
- package control: install提示There Are No Packages Available For Installation
- https://stackoverflow.com/questions/37505484/cant-exit-git-commit-in-windows
- Mybatis Generator相关xml配置文件含义解析
- Ubuntu使用教程:E: 无法获得锁 /var/lib/apt/lists/lock