正值、补码、反码

2024-01-02 09:58
文章标签 反码 补码 正值

本文主要是介绍正值、补码、反码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习Java基础知识,感觉Java里的整数应该是用补码保存的,这里回顾整理一下各种编码方式


真值:

也就是数字现实中的含义 符号+绝对值,例如+122,-2


原码:

第一位代表真值的正负,【+1】原码=0000 0001 【-1】原码=1000 0001

除去符号位,数字位的取值范围是0000~1111,以8位有符号数为例,取值范围是-111 1111到+111 1111,即[-127,127],但其中0000 0000和1000 0000都表示0,重复了


反码:

正数反码:和原码相同

负数反码:除符号位以外,其他位取反,原码【10010】=反码【11101】=真值【-2】

取值范围:[-127,+127]


补码:

正数补码:和原码相同

负数补码:在其反码的末位加1,即符号位不变,其余位取反+1

取值范围:[-128,127]    (Java中 1个字节长度的Byte的取值范围)

以4位补码为例,0只有+0,没有-0,

1000000是最小的负数
       

2进制          计算 真值
1000 -(111+1)= -1000 -8
1001 -(110+1)= -111 -7
1010 -(101+1)= -110 -6
1011- 101 -5
1100-100 -4
1101- 011 -3
1110- 010 -2
1111- 001 -1
0000~
0111
+0~+7 0~7


这篇关于正值、补码、反码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/562098

相关文章

原码、反码、补码新解

世界上有10中人,一种懂二进制,一种不懂二进制。我们习惯了十进制计数,乍看到二进制,有点别扭,认识后慢慢发现它的神奇:有点一生二,二生万物的意思。十进制和二进制的部分对应关系如下: 小范围的十进制运算,我们操练起来麻麻溜溜的,二进制的运算相信你也不差,然,碰到十进制转二进制的运算就有点蒙圈了。 计算机 CPU 的运算器只实现了加法器,没有实现减法器。但,我们可以通过加上一个负数来实现减法运

C语言操作符详解1(含进制转换,原反补码)

文章目录 一、操作符的分类二、二进制和进制转换1.二进制与十进制的相互转换2,二进制与八进制的相互转换3.二进制与十六进制的相互转换 三、原码、反码和补码四、移位操作符1.左移操作符(1)左移操作符移位方法(2)左移操作符规律总结 2.右移操作符(1)逻辑右移移位方法(2)逻辑右移规律总结(3)算术右移移位方法(4)算术移位规律总结 五、位操作符:&、|、^、~1.按位与操作符&2.按位或

【软考】——原码、反码、补码、移码

在计算机中,数据编码方式可以有多种,最为常见的有原码、反码、补码、移码。在进行原码,反码,补码,移码之间的转换的时候首先要将他们转换为二进制,在下面的讲解中以17为例来进行讲解。 将17转换为八位数的二进制为00010001。 【原码】      在原码中,将最高位用作符号位(0表示正数,1表示负数),其余各位代表数值本身的绝对值的表示形式,正数的原码是本身,负数的原码只

原码 反码 补码 及 python的位运算

令计算机字长为8位 原码: 正数转化为2进制,负数第一位取1。 1 : 0000 0001 -1 : 1000 0001 反码: 正数的原码不变,负数为原码符号位不变,其余取反。 1 : 0000 0001 -1 : 1111 1110 补码: 正数原码不变,负数为原码符号位不变,其余的按位取反再加一,故1000 0000可以表示为-128 1: 0000 0001 -1 :

原码、反码、补码的由来和计算

引言      在软考教程第一章中有一节是数据表示。这一节介绍了原码、反码和补码,当时只是记住正负数的每个码的转换规则,却没有想一下为什么要用这么多形式的码来表示一个数据,也没有对三种码的转换进行总结,今天让我们来揭开奥秘! 一、机器数和真值: 1、  机器数         各种数值在计算机中表示的形式称为机器数。特点是采用二进制计数制,数的符号用0和1表示,小数点则隐含,表示

补码反码转换

十六进制问题 扫描输入一个字节数组   15  00  29  f9 a1 d1 输出变成  21 0 41 -7 -95 -47      -47————1010 1111(16*2+15)——11010000————11010001 d1 原来是按照十六进制识别识别为10进制的负数 正数的补码不变,负数的补码先取反(符号位不取反)后加1

原码、反码和补码详细集合

目录 一.什么是原码,反码,补码? 1).原码(true form): 2).反码: 3).补码: 二.为什么要有原码,反码,补码  一.什么是原码,反码,补码? 1).原码(true form): 原码是计算机中对数字的一种二进制定点表示方法。 在原码中,取最高位用做符号位(0表示正,1表示负)其余位表示数值大小(该数真值的绝对值)。 整数:原码即其二进制。 小数:

Java之运算符,位运算(源码反码补码)和基本数据类型

文章目录 1 java运算符1.1 各个运算符一览1.2 部分运算符说明1.3 java基本位操作1.3.1 位操作符号1.3.2 原码反码补码1.3.2.1 相关定义1.3.2.2 为何要使用原码, 反码和补码1.3.2.3 负数运算1.3.2.4 转换16进制为什么需要 &0xff 1.3.3 常用的位运算符运算1.3.3.1 左右位移 2 基本数据类型 1 java运算符

二进制原码,反码以及补码实战

学了好长时间,今天终于真正理解了计算机中负数的存储,终于理解了补码的运算! 我们很多人在初学有关进制知识的时候,大都学得头大,特别是在关于二进制补码表示,以及补码与十进制负整数的相互转换的时候,学完之后都觉的晕乎乎的。也可能有的人学完之后感觉良好,但当被问及n位二进制补码的十进制表示范围的时候,他就晕了。比如8位二进制补码的十进制表示范围是:-128~127,为什么呢? 我刚开接触进制是学数字电

用 C 语言实现求补码的运算

缘起 前两天程序中需要求一堆参数的补码,一时犯懒,想从CSDN上搜一个勉强能用的代码借鉴一下,结果几乎没有搜到一个靠谱的!这种求补码的操作,用脚趾头想想也应该知道要用C或者C++的位运算来实现呀。结果搜到的一些实现方式竟然是把数值的二进制形式下的位,一位一位地进行操作!这简直离谱到家了,虽然这样做也能从功能上实现求补码的运算,但是性能肯定奇差呀。我们之所以用 C 或者 C++,通常都是对性能有一