1.1. java虚拟机整数

在java虚拟机中整数有byte、short、int、long四种 分别表示 8位、16位、32位、64位有符号整数。整数使用补码表示。

所以我们先了解一下原码和反码。

1.1.1. 原码

所谓原码就是符号位加上数字的二进制表示,int为例,第一位表示符号 (0正数 1负数)简单期间一个字节表示

+7的原码为: 00000111
 -7的原码为: 10000111

对于原码来说,绝对值相等的正数和负数只有符号位不同。

1.1.2. 反码

一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,(符号位不变化,其余位数取反)。

换言之 该数的绝对值取反(绝对值取反各位都取反)。
为了简单起见,我们用1个字节来表示一个整数:
     +7的反码为:00000111
     -7的反码为: 11111000

1.1.3. 补码

补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,去到反码然后加1。(反码加1就是补码)为了简单起见,我们用1个字节来表示一个整数:
+7的补码为: 00000111
-7的补码为: 11111001

1.1.4. 总结

正数:它的原码、反码、补码相同。

负数:反码符号位不变化,其余位数取反,补码符号位不变化其余各位原码取反(反码)+1换言之 反码+1

已知一个负数原码求反码:

步骤:

1.该数的绝对值取反

已知一个负数反码去求补码:

1.反码+1

已知一个负数求反码步骤:

正数的绝对值取反+1

已知一个负数求补码步骤:

1.二进制原码表示

2.符号位不变化为1 求反码。

3.符号位不变化,其余的加1.

实例如下:

-10求补码步骤:

-10的原码: 10000000 00000000 00000000 00001010

-10的反码: 11111111 11111111 11111111  11110101

-10的补码:11111111 11111111 11111111 11110110

已知一个负数的补码,将其转换为十进制数,步骤

1、先对各位取反;
      2、将其转换为十进制数;
      3、加上负号,再减去1。

例如:

11111010,最高位为1,所以是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。

1.1.5. Java byte 类型的取值范围

1.确定byte是1个字节,也就是8位。

2.最大值 0111 1111

3.最小值 1000 0000。

4.0111 1111 就是127。

5.1000 0000 减去1是 1111 1111 按照位取反 1000 0000 得到-128

1.1.6. 常见问题

int a=232;

//0000 0000 1110 1000

System.out.println(Integer.toBinaryString(a));

System.out.println((byte) a);

输出结果为-24:

原理如下图:

java原码、补码、反码总结相关推荐

  1. java 原码 补码 反码

    1 原码 就是该数字不进行其他操作时数字最原始的二进制表示,在Java中我们有熟悉的byte,short,int,long的整数型基本数据类型以及float,double的浮点型基本数据类型. 在Ja ...

  2. java反码补码原码作用_java原码补码反码关系解析

    本文为大家解析了java原码补码反码的关系,供大家参考,具体内容如下 原码:不管源数据是十进制还是十六进制,统统将数字转成二进制形式 反码:把原码的二进制统统反过来,0变成1,1变成0 补码:负数的反 ...

  3. c语言原码 补码 反码,C语言 原码--反码--补码

    //原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...

  4. 真值 原码 补码 反码 移码

    真值 原码 补码 反码 移码 真值是相对与其它四种的数字类型 书写中一般表示的数叫做"真值" 机器中编码表示的数 "机器数||机器码<原码 补码 反码 移码 > ...

  5. 计算机组成原理:原码,补码,反码,移码

    无符号数 寄存器的位数反映和决定无符号数的表示范围 比如八位的寄存器就只能储存十进制的0-255 有符号数 机器数与真值 在计算机当中没有硬件表示小数点的位置,而小数点的位置是我们自己约定的, 小数的 ...

  6. 原码 补码 反码的转换

    正数 : 原码 补码 反码都相同 机器数:+1001010 原码:01001010 (符号位 正数为0) 补码:01001010 (补码与原码相同) 反码:01001010 (反码与原码相同) 负数 ...

  7. 原码 补码 反码 移码

    目录 原码 反码 补码 移码 转换 原码 补码 反码 原码 0和1组成 正负用0和1表示(添加在最前面) 真值转原码 转化符号位 数值位十进制转二进制 对于十进制数 233(正数) 正数->符号 ...

  8. 计算机组成原理之 原码 补码 反码

    原码 补码 反码 前言 一.有符号数 1.1原码 补码 反码 总结 前言 在计算机中一般使用二进制表示各个有理数.在计算机中参与运算的数有两大类:有符号数和无符号数.无符号数就是没有符号的数,在寄存器 ...

  9. java部分基础知识 (二):计算机组成原理 原码 补码 反码 按位符 移位符 按位与 按位或 按位抑或 非 分析hashMap的put方法原理

    这里写目录标题 引言 符号位 正数的二进制计算 负数的二进制计算 按位符和移位符 按位符 移位符 分析hashMap运算符 byte和char 总结 引言 最近做完一个项目后,我忽然发现自己的基础并不 ...

  10. java 原码 补码,Java中的原码、反码和补码

    1.实例 先来看个例子 public static void main(String[] args) { System.out.println(~2); } ~在Java中是按位取反的意思,2是整形占 ...

最新文章

  1. 矩阵计算在计算机科学中,开发者必读:计算机科学中的线性代数(附论文)
  2. 14PS中的切图基本操作
  3. 关于烂代码的那些事(中)
  4. 每日一皮:程序员的生存状态 ...
  5. C++ memcpy和memmove实现
  6. 3.Struts2的输入验证
  7. 51. 顺时针打印矩阵[print matrix in clockwise direction]
  8. SAP Spartacus Component-wrapper.directive.ts launch Component的三个参数
  9. 关于jrebel碰到的一次问题记录
  10. c++ 整数取反_c++ 取反运算符“~”
  11. SpringBoot 集成WebSocket
  12. 20190925:(经典算法系列)河内之塔
  13. 【NOIP2015】运输计划
  14. CodeForces - 976C(结构体排序思维)
  15. 用python代码画爱心,来自程序猿的浪漫
  16. Python——数据结构——图——邻接矩阵
  17. 计算机快速看图教程,cad快速看图制图
  18. 新手小白如何从0到1学会电商运营,这3个方法带你月入五位数
  19. 罗马数字转换阿拉伯数字
  20. java的HMACSHA1加密算法

热门文章

  1. NMF(非负矩阵分解)的场景应用
  2. 计算机 大文件查找,win7笔记本电脑如何快速查找大文件
  3. JavaWeb—作业【建立新闻数据库以及插入数据】
  4. 7-7 找出总分最高的学生 (15 分)
  5. Android EditText 常用属性总结
  6. DotNetBar 6.6.0.1 Crack
  7. python3-基础2
  8. 假期周进度总结(三)
  9. Redis基础6(Redis6管道)
  10. OJ:一道考察多态的题目