问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

简单易学的二进制源码、反码、补码,不懂的快看过来

发布网友 发布时间:2022-12-30 15:18

我来回答

1个回答

热心网友 时间:2023-10-30 19:46

二进制在计算机技术中广泛应用。二进制数用0和1两个数字及其组合来表示任何数,二进制的进位规则是:“逢2进1”。数字1在不同的位上代表不同的值,按从右至左的次序,这个值以2倍递增。

在计算器中参与运算的数有两大类:无符号数和有符号数

对于有符号数而言,符号的正、负机器是无法识别的,但由于“正、负”恰好是两种截然不同的状态,如果用“0”表示“正”,用“1”表示“符”,这样符号也被数字化了,

并且规定将它放在有效数字的前面,即组成了有符号数。所以,在二进制中使用最高位(第一位)来表示符号,最高位是0,表示正数;最高位是1,表示负数。

无符号数是针对二进制来讲的,无符号数的表数范围是非负数。全部二进制均代表数值(所有位都用于表示数的大小),没有符号位。即第一个"0"或"1"不表示正负。

例子:

在二进制系统中是以bit(位)来作为数据存储单元的(详细内容请看前言),假设 int number = 1 ,那么number在计算机系统中将表示如下:

00000000 00000000 00000000 00000001

同理可得,number=-1 时,在二进制中表示如下:

10000000 00000000 00000000 00000001

注意:最高位(第一位)是符号位,因为是number值为1是一个正数,所以最高位为0;

要从右到左用二进制的每个数去乘以2的相应次方(次方要从0开始算起);

假如:二进制数1101转化成十进制 ,那么 1101 = 1*20+0*21+1*22+1*23 = 1+0+4+8 = 13;

注意:任何数的0次方都是1。

对于有符号数而言:

二进制的最高位是符号位:0表示正数,1表示负数

正数的原码、反码、补码都一样;

负数的反码 = 它的原码符号位不变,其他位取反(0 ->1 ; 1->0 );

负数的补码 = 它的反码 +1;

0的反码、补码都是0;

在计算机运算的时候,都是以补码的方式来运算的;

例子:

下面我们就使用“有符号数”来模拟一下,在计算机中是怎样运算的。

例如:1+1 ,在计算机中运算如下:

1的原码为:

00000000 00000000 00000000 00000001

因为“正数的原码、反码、补码都一样”,所以,1的补码 = 1的原码,所以 1的补码+ 1的补码 就等于:

00000000 00000000 00000000 00000001

+

00000000 00000000 00000000 00000001

=

00000000 00000000 00000000 00000010

00000000 00000000 00000000 00000010( 转换为10进制) = 0*2^0 + 1*2^1 = 0 + 2 =2

例如:1-2,在计算机中运算如下:

在计算机中减运算其实是作为加运算来操作的,所以,1-2 = 1 + ( -2 )

第一步: 把 1补码找出来(因为正数的原码、反码、补码都一样,所以我们可通过原码直接获取补码):

1的补码:

00000000 00000000 00000000 00000001

第二步: 把-2的原码找出来:

-2的原码:

10000000 00000000 00000000 00000010

第三步: 把-2的反码找出来:

-2的反码:

11111111 11111111 11111111 11111101

第四步: 把-2的补码找出来:

-2的补码:

11111111 11111111 11111111 11111110

第五步: 1的补码与-2的补码相加:

00000000 00000000 00000000 00000001

+

11111111 11111111 11111111 11111110

=

11111111 11111111 11111111 11111111

第六步: 将计算结果的补码转换为原码,反其道而行之即可(如果想将二进制转换为十进制,必须得到二进制的原码)

补码:11111111 11111111 11111111 11111111

=

反码:11111111 11111111 11111111 11111110

=

原码:10000000 00000000 00000000 00000001

第七步: 将计算结果的二进制原码 转换 为十进制

二进制原码:10000000 00000000 00000000 00000001 = 1*2^0 = -1

JAVA中所有的数字变量都是有符号(正负)的?

这句话,还有点争议。在Java中char类型是:16位Unicode字符,取值范围 0 ~ 65535 , 不存在负数范围,从这点上说:"char类型就是一个无符号数";

1.正数的原码、反码、补码都一样;

2.如果想将 二进制 转为 十进制,必须使用 二进制的原码;

感谢你看到这里,我是 程序员麦冬 ,一个java开发从业者,深耕行业六年了,每天都会分享java相关技术文章或行业资讯

欢迎大家关注和转发文章,后期还有福利赠送!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 抖音在哪获取视频的链接 忘记了如何找回? 忘记了,还可以找回来吗? 忘记了怎么办? 自己在家如何做炸串 炸串的做法及配方有哪些 请问大仙苹果5手机下载的证书已满,提示让我删除,请指点怎样删除不用的证书。谢谢! 怀孕梦见生个怪胎 生孩子生了个怪胎是什么意思 戒烟两年想复吸 梦见自己光身,用东西围着 伦士度染发剂:草莓焦糖棕、樱桃粉棕、木莓粉色。哪种是棕色里粉色显得比较明显但又不是很鲜艳的红色的? 如何用酷爱染发 4种方法来用酷爱染发 天蓝色和草莓红哪个显白 英雄联盟星上加星任务怎么做 lol信用星我号已经被封 怎样提升信用星度 lol荣誉等级什么时候刷新 lol被麦片登录封号怎么办 lol被封了还怎么提高信用星? 会计学acca专业就业方向有哪些 会计学acca专业就业方向 忘记了怎么办? 忘记了,还可以找回来吗? 忘记了如何找回? 女生洋气且有气质网名唯美小清新? 煎蛋为什么会粘锅 煎蛋粘锅是什么原因 企业购入需要安装的固定资产购入时界方应计入什么账户 苹果手机拍照晃动模糊应该怎么办 固定资产属于调整账户吗 上海警察学员招警考试有哪些途径 上海军天湖监狱狱警招聘考试科目 特别好听有气质的女生网名大全有哪些 如何正确使用汽油割草机 怎样加油才正确 请问一下卸妆油的正确用法是什么 冰箱长时间停电里面的东西会坏吗? vivox7plus拆机教程视频 请问大佬有天狗2006年上映的由富大龙主演的高清视频在线观看资源吗 华为手机怎样注册第二个? 我的世界创造模式地图怎么看 我的世界如何查看所处地图的经纬度