鱼C论坛

 找回密码
 立即注册
查看: 2011|回复: 21

[已解决]请写1000 0000二进制数(补码)对应的十进制数

[复制链接]
发表于 2021-10-1 21:26:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问大神,请写1000 0000二进制数(补码)对应的十进制数,不知道是怎么算的,知道书上的是-128,但就是不知道是怎么算的,。不知道过程。
知道负整数补码加1,负七负八都知道怎么算,正 的128也能换算出二进制数,,,就只有这个二进制数(补码)10000000不知道怎么算的,不知道这个构架是怎样的。答案是2的7次方,可这和书上说的不一样啊,负整数不是还要0变成1,1变成0吗,不是还要加1吗,哎。。。这个问题堆积起来解决不了就成大问题了。。哎。。。我太难了。。。
最佳答案
2021-10-2 22:28:51
本帖最后由 人造人 于 2021-10-2 22:31 编辑
317109954 发表于 2021-10-2 22:16
那这个128的二进制数是10000000,-128的二进制数还是10000000.两个数的二进制数是一样的,只是负128的二 ...

一个字节是 8 位
如果是有符号数,一个字节无法表示 128

2 个字节
128 的二进制是 0000 0000 1000 0000

取反 1111 1111 0111 1111
加一 1111 1111 1000 0000
-128 的二进制是 1111 1111 1000 0000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-1 22:46:26 | 显示全部楼层
10000000(补码)第一位是符号位,第一位是1的话就是代表这是个负数,按位权计算也就是-1*2^7+0*2^6+...+0*2^0=-128
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-1 22:54:25 | 显示全部楼层
我没太理解你后面说的意思,比如7(10)对应的二进制是00000111,所以-7(10)就是先发把符号位变成1,也就是10000111,然后除了符号位以外1变0,0变1,也即是11111000,然后在加1,也就是11111001,你不信可以按位权算一下,也就是-1*2^7+1*2^6+1*2%+1*2^5+...1*2^3+2^0=-7
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-1 23:00:49 | 显示全部楼层
小甲鱼之前有这个文章,你要是还没理解,可以去扩展阅读看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-2 00:47:10 | 显示全部楼层
wyz20010429 发表于 2021-10-1 23:00
小甲鱼之前有这个文章,你要是还没理解,可以去扩展阅读看看

看了,唯有这个10000000补码变-128不知道过程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-2 00:52:35 | 显示全部楼层
wyz20010429 发表于 2021-10-1 22:54
我没太理解你后面说的意思,比如7(10)对应的二进制是00000111,所以-7(10)就是先发把符号位变成1,也就 ...

谢谢,-7,了解,就是10000000补码变成-128不知道是怎么回事,我的意思是想知道10000000补码变成-128的过程。。。就像你上边写的变成-7的过程是怎样的。。
128变成10000000我也知道过程,10000000变成128也知道过程。。。可就是10000000补码变成-128不知道是咋回事啊。。。怎么算嘛,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-2 06:59:34 | 显示全部楼层
本帖最后由 jhq999 于 2021-10-2 16:44 编辑

正整数(00000000~01111111)是128个,但是从零开始所以最大是127,
负整数是从10000000~11111111(128个负数)从-1开始所以最小是-128,
11111111是-1(0000001减1取反再加上符号,或者取反加一)
一直到10000000=-128:
(128)1000000变负数,减一 01111111取反00000000再加上符号位的1就是10000000
反过来就是除去符号位剩下的七位权值0000000取反1111111加一10000000就是128

*过程中不要考虑进位、借位和高位,只要7位权值,高位只代表符号,例如0000000-1=1111111不要管借位*
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-2 07:50:44 | 显示全部楼层
128->010000000,010000000->101111111+0..01=110000000->-128,可以验证010000000+110000000=100000000,也就是int型的0,大哥,我语文不好,你看看是这个意思不
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-2 07:51:42 | 显示全部楼层
我尽力了,看看别的大佬怎末解答的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-2 21:59:22 | 显示全部楼层
wyz20010429 发表于 2021-10-1 22:46
10000000(补码)第一位是符号位,第一位是1的话就是代表这是个负数,按位权计算也就是-1*2^7+0*2^6+...+0* ...

书上说符号位不参与乘除的,,,那就变成了0000000了,0*2^7+0*2^6+……+0*2^0=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-2 22:03:27 | 显示全部楼层
wyz20010429 发表于 2021-10-2 07:51
我尽力了,看看别的大佬怎末解答的吧

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-2 22:04:38 | 显示全部楼层
wyz20010429 发表于 2021-10-2 07:50
128->010000000,010000000->101111111+0..01=110000000->-128,可以验证010000000+110000000=100000000,也 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-2 22:16:52 | 显示全部楼层
jhq999 发表于 2021-10-2 06:59
正整数(00000000~01111111)是128个,但是从零开始所以最大是127,
负整数是从10000000~11111111(128 ...

那这个128的二进制数是10000000,-128的二进制数还是10000000.两个数的二进制数是一样的,只是负128的二进制数有补码说明,正128的二进制数没有补码说明,是这样的吗?扩展里也没有,如果是这样的就照这个办法判断了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-2 22:28:51 | 显示全部楼层    本楼为最佳答案   
本帖最后由 人造人 于 2021-10-2 22:31 编辑
317109954 发表于 2021-10-2 22:16
那这个128的二进制数是10000000,-128的二进制数还是10000000.两个数的二进制数是一样的,只是负128的二 ...

一个字节是 8 位
如果是有符号数,一个字节无法表示 128

2 个字节
128 的二进制是 0000 0000 1000 0000

取反 1111 1111 0111 1111
加一 1111 1111 1000 0000
-128 的二进制是 1111 1111 1000 0000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-2 22:30:41 | 显示全部楼层
如果是一个字节,有符号数
127 + 1 是 -128,不是 128
一个字节无法表示 128
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-2 22:50:03 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-4 00:39:28 | 显示全部楼层
人造人 发表于 2021-10-2 22:30
如果是一个字节,有符号数
127 + 1 是 -128,不是 128
一个字节无法表示 128

明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-4 00:45:11 | 显示全部楼层

谢谢老师,书上没有写成两个字节,,-128直接就写了个10000000在那里,难怪看不明白;2个字节的看着就是那个意思了,但是书上-128为啥只写成10000000而不把0000000010000000全部写出来呢,搞的我在那里算去算来总是找不到那个1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-4 08:02:32 | 显示全部楼层
317109954 发表于 2021-10-4 00:45
谢谢老师,书上没有写成两个字节,,-128直接就写了个10000000在那里,难怪看不明白;2个字节的看着就是 ...

但是书上-128为啥只写成10000000而不把0000000010000000全部写出来呢
这就不知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-4 09:28:38 | 显示全部楼层
补码,一般用于正负数;步骤是取反(~)+1

举个栗子:
1补码-1
1的内存:00000001
1的取反:11111110
取反+1 & -1内存 :11111111
同理
-1补码1
-1的内存:11111111
-1的取反:00000000
取反-1 & 1内存 :00000001
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表