负数在计算机中的表示方法

假设有一个int类型的数,值为5,在计算机中的表示为:(int型的数占4个字节,32位)所以前面会有一堆0

00000000 00000000 00000000 00000101

现在想知道-5在计算机中怎么表示?

在计算机中,负数以其绝对值的补码形式表达。 需要先获得其绝对值的原码,再得反码,再得补码。

首先理解几个概念:原码、反码、补码

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

如:00000000 00000000 00000000 00000101 是5的原码。

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)

比如将00000000 00000000 00000000 00000101每一位取反得:11111111 11111111 11111111 11111010

称11111111 11111111 11111111 11111010是00000000 00000000 00000000 00000101的反码

反码是相互的。

补码:反码加1称为补码。

比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

那么,补码为:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

所以-5在计算机中的表达为:11111111 11111111 11111111 11111011

原文地址:https://www.cnblogs.com/xiaoan0705/p/10506435.html

时间: 2024-10-24 11:58:50

负数在计算机中的表示方法的相关文章

负数在计算机中的存储

负数在计算机中以补码的形式存储,最高位1为负数,0为正数,补码的方式方便进行加法运算. byte类型数值范围-128到127. 最高位是标志位,127二进制为01111111,则-127为10000001,-128=-127-1,所以其二进制为10000000 byte b=11111111;正数表现形式:00000001,即b=-1; 正数取反加1为其负数表现形式,那么负数取反加1会得到起它的正数形式吗? 例:-3=1111 1101 ;取反后为:0000 0010 ; 加1:0000 001

IEEE 754 浮点数在计算机中的表示方法

IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”:它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式). IEEE 754规定了四种表示浮点数值的方式:单精确度(32位).双精确度(64位).延伸单精确度(43比特以上,很少使

关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)

先看一段推理<*一切都是在8个比特位的前提下,讨论二进制的符号位,溢出等等,才有意义*> +124:0111 1100 -124:1000 0100 +125:0111 1101 -125:1000 0011 +126:0111 1110 -126:1000 0010 +127:0111 1111 -127:1000 0001 +128:0 1000 0000   -128:1000 0000 从上述过程对比可以看出:+128是在127的基础上加1得到,但是会造成溢出(JAVA中byte的大小

负数在计算机中的表示 Byte-128

http://blog.csdn.net/njuitjf/article/details/4585247 今天,老大让我调查一个浮点数转换为整数的问题.自己就查了些资料,顺便复习一下原码.反码和补码. 原码:将一个整数,转换成二进制,就是其原码.如单字节的5的原码为:0000 0101:-5的原码为1000 0101. 反码:正数的反码就是其原码:负数的反码是将原码中,除符号位以外,每一位取反.如单字节的5的反码为:0000 0101:-5的原码为1111 1010. 补码:正数的补码就是其原码

负数在计算机中如何存储

符号位 在8位机中,规定每个字节的最高位为符号位.那么,+8就是00001000,而-8则是10001000. 但是,随便找一本<计算机原理>,都会告诉你,实际上,计算机内部采用2的补码(Two's Complement)表示负数. 计算机处理加法运算逻辑 正数的原码,反码,补码都相同,负数的原码,反码,补码都不同. [x]补码+[y]补码=[x+y]补码,如果结果是正数,正数补码等于原码,如果是负数再转化成原码([x]原码=[[x]补]补) 什么是补码,及计算方法 第一步,每一个二进制位都取

负数在计算机中是怎么存储

今天,发生一件非常有趣的事情. 公司同事问了我一个问题:为什么 2.0 - 1.1 = 0.89999999 呢?不应该是 0.9吗? 原来是,他问了周围一圈的同事,都给他的是同一个回答,说这是精度问题.他百思不得其解,怎么就会产生精度问题呢.再问,就没人知道原因了. 然后,我就看到了他抱着一本厚厚的书在看.拿过来一看,是一本Java书,厚厚的六百多页,这还仅是第一卷.哟呵,这是准备大干一场啊. 看在他这么努力学习的份上,还有他那对知识极度渴望的眼神.我决定,把我毕生所学传授与他. 于是,就给他

计算机中负数表示法

问一个基本的问题. 负数在计算机中如何表示? 举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢? 很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数.比如,在8位机中,规定每个字节的最高位为符号位.那么,+8就是00001000,而-8则是10001000. 但是,随便找一本<计算机原理>,都会告诉你,实际上,计算机内部采用2的补码(Two'sComplement)表示负数. 什么是2的补码? 它是一种数值的转换方法,要分二步完

计算机中数字的二进制存储形式

今天,做个关于二进制的算法题,突然有个问题一直想不通为什么~5是6,计算机基础知识不过关啊,所以现在来弥补下,正数和负数在计算机中是怎么存储和计算的. 讲讲计算机中的存储形式: 计算机中存储的数都是以补码的方式存储的,而正数的原码,反码,补码都是一样的.但是负数的原码,反码,补码是不一样的. 下面都是以java中的int i=5为例. 正数5的原码就是其二进制码:00000000 00000000 00000000 00000101 反码是:00000000 00000000 00000000

计算机中负数的表示方法(例子取自coursera)

今天做coursera测试题的时候,一开始听课不是很清楚,做题的时候还错了一次,第二次总算答对了,好了,先把结果贴出来: 这边打印一个右移2位后的负数,负数在计算机里面是用补码的形式表示,+12由于是整型数据,所以表示为00000000 00000000 00000000 00001100(原码) -12先要对+12的原码取反:11111111 11111111 11111111 11110011(反码)再对反码+1(0001) 11111111 11111111 11111111 111101