一、基本介绍(关于下列五个定义来自http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html#!comments,谢原博主分享)

什么是机器数:一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1.比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。

什么是真值:因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

什么是原码:原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。[+1] = 0000 0001;[-1] = 1000 0001。

什么是反码:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。[+1] = [00000001] = [00000001]反;[-1] = [10000001] = [11111110]反。

      什么是补码:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。(即在反码的基础上+1)

二、检验

有如下代码:

 package demo;
public class Bit {
public static void main(String[] args) {
int a=-11;
System.out.println(a>>1); } }

运行结果截图如下:

在这个程序中,我们用右移位运算来检验我们的Java中的数字表示方式。

A:若用原码表示。-11的机器数表示为[10001011]原,右移后表示为[11000101],十进制为-69,与正解-6不一样。所以不是用原码表示。

B:若用反码表示。-11的机器数表示为[11110100]反,右移后表示为[11111010]反,转换成原码为[10000101]原,十进制为-5,与正解-6不一样。所以不是用反码表示。

C:若用补码表示。-11的机器数表示为[11110101]补,右移后表示为[11111010]补,转换成补码为[111111001]反,再转换成原码为[100000110],十进制为-6,与正解-6一致。所以Java中的数是用原码表示的。

综上,Java中的数是用补码表示的。

 

Java中的数是用补码表示的检验的更多相关文章

  1. Java中唯一数的生成

    唯一数的生成很简单,基本上以时间为基础进行生成.在JDK里面已经有java.util.UUID类可以生成唯一的随机数.如果希望生成的唯一数为特定的格式,那么就需要自己来生成唯一数了.生成唯一数时有两个 ...

  2. Java语法基础课 原码 反码 补码

    原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 反码的表示方法是:正数的反码是其本身:负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 补码的表示方法是在反码的基础 ...

  3. 原码、补码,反码以及JAVA中数值采用哪种码表示

    原码.补码,反码以及JAVA中数值采用哪种码表示 1.原码定义(摘自百度百科):一种计算机中对数字的二进制定点表示方法,原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位 ...

  4. java中二进制反码补码的理解

    7句真言 1,二进制最高位是符号位 0正数 1负数 2,正数的原码,反码,补码都一样 3负数的原码反码 补码 (符号位不变,其他的位数取反 0->1 1->0) 4 0的反码补码都是0 5 ...

  5. java中的int与byte的转化

    java中的int与byte的转化 1.基础准备 1.1.原码 就是二进制码,最高位为符号位,0表示正数,1表示负数,剩余部分表示真值 1.2.反码 在原码的基础上,正数反码就是他本身,负数除符号位之 ...

  6. java原码、反码、补码、位运算

    1.对于有符号的数(java中的数都是有符号的) 二进制的最高位是符号位:0表示正数,1表示负数 正数的原码,反码,补码都一样 负数的反码=它的原码符号位不变,其它位取反 负数的补码=它的反码+1 0 ...

  7. JAVA中int、String的类型转换

    int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i); ...

  8. java中字符串String 转 int(转)

    java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法 ...

  9. java中string和int互相转化

    1 怎样将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...

随机推荐

  1. [UCSD白板题] Maximize the Value of an Arithmetic Expression

    Problem Introduction In the problem, your goal is to add parentheses to a given arithmetic expressio ...

  2. angularjs 1.x $q模块使用

    什么是$q $q是angularjs1.x中内置服务,在需要使用时可以注入它. angular.module('app').controller('myController', function my ...

  3. Mac下git命令自动补全

    当我第一次在mac上安装git,[tab]补全装成功了,但是我没有记录,当我过一段时间在重装的时候,我已经忘记了,又是各种查资料,再次做一下简单的记录. 首先,我因为还是mac小白,所以使用Homeb ...

  4. LightHttpd源码分析

    源码:https://github.com/EZLippi/Tinyhttpd 要在Linux中编译,无需像代码注释所说那样: /* This program compiles for Sparc S ...

  5. 关于Unity -Vuforia -Android 开发 ,平台的搭建(极品菜鸟完整版)

    一.首先安装 java jdk , 度娘 “JDK” 进入官网下载即可,链接如下: http://www.oracle.com/technetwork/java/javase/downloads/jd ...

  6. 基于EasyUi ComBotree树修改 父节点选择问题

    本人在使用 Easy UI 期间发现了一个不太适合项目的bug,可能也不算bug把 . 毕竟不同项目背景 取舍不同. 我在做网元树选择的时候  发现当选取父节点后,子节点都会被选择  返回  .但是如 ...

  7. HTML5-链接

    链接:外部,图片,内部 <!DOCTYPE html> <html> <head lang="en"> <meta charset=&qu ...

  8. PHP学习第一天笔记——php的基本语法

    1.php嵌入到html中的方式 (1) <?php.....?> 标准风格(推荐) (2)<script language="php">......< ...

  9. Swift 对比学习 (二)

    书接上回,可以作为参数和返回值的函数数型,以及嵌套函数,绝对继承了动态语言的优良传统: 函数嵌套了,那必然少不了闭包问题,Swift的闭包表达式语法也蛮有趣的. { (paraeeters) -> ...

  10. ASP.NET 5系列教程 (一):领读新特性

    近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用不再受限于IIS.Cloud-ready环境配置降低了云端部 ...