鱼C论坛

 找回密码
 立即注册
查看: 1852|回复: 9

原码 反码 补码

[复制链接]
发表于 2013-11-2 15:49:33 | 显示全部楼层 |阅读模式

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

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

x
为什么8位的有符号数表示的范围是-128-127
我怎么想不通,我认为是-127-127,因为第一位是符号位是0或1,那么余下7位最大也就是127,当第一位是1时,那后七位全是1时,不就表示了最大负数-127嘛?为什么是-128,想不通
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-2 15:50:20 | 显示全部楼层
希望,懂的人告诉我,我的这个没学好,现在重新学习补码知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-2 22:04:55 | 显示全部楼层
本帖最后由 福禄娃娃 于 2013-11-2 22:20 编辑

由于-128的原码用8位无法表示,所以必须扩展到16位去表示,然后对16位的原码计算出16位的反码和补码,最后对16位的补码作低8位的截断,截断的低8位的值就是-128的补码了。

// 8位所能表示的 原码 的范围-127到+127
// 8位所能表示的 反码 的范围-127到+127
// 8位所能表示的 补码 的范围-128到+127

// 计算机当中,是规定-128的补码是1000 0000
// 算的时候则需要扩展到16位来算。否则,第8位到底表示符号还是表示数值2的7次方呢?所以,8位就按8位的通常看法来看, -128 的补码是 1000 0000
// 是难以理解的。只能扩展后来看。 

// -128 原码 1000 0000 1000 0000
// -128 反码 1111 1111 0111 1111
// -128 补码 1111 1111 1000 0000

// -129 原码 1000 0000 1000 0001
// -129 反码 1111 1111 0111 1110
// -129 补码 1111 1111 0111 1111

int main(int argc, char* argv[])
{
char ch = -129; // warning C4309: 'initializing' : truncation of constant value
char ch2 = -128; // no warning
return 0;
}

注意:由于char能表示的范围是:-128~127,如果将-129赋给char,编译的时候是会产生warning的,并会截断,截断后的值是0x7f(127)。

浅析为什么char类型的范围是 —128~ 127.rar

3.5 KB, 下载次数: 10

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

使用道具 举报

发表于 2013-11-2 22:59:01 | 显示全部楼层
如果是0开头,比如0000 0000就按正常的算法,结果是0
如果首位是1,说明是负整数,则取反加1,比如1000 0000,取反就是0111 1111,加1就是1000 0000,则结果就是2的7次方,就是-128了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-3 00:11:36 | 显示全部楼层
很详细,不错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-3 03:46:05 | 显示全部楼层
如果是-127的话那就少了一个数了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-3 07:12:26 | 显示全部楼层
8bit最多可以表示2^8 = 256个不同的数字 是吧不解释了
第一位就是最高位是用来表示符号的 (只有非负数和负数)所以应为0属于非负数是吧2^7 = 128 所以非负数
是0~127 负数是-128~-1 即-128~127
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-3 08:15:43 | 显示全部楼层
so particular
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-3 08:41:27 | 显示全部楼层
bu cuo a !!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-14 22:46:07 | 显示全部楼层
学习学习了!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 19:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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