20.从零开始学习C语言--补码

所有整数在计算机中都是以补码来存储的,首位0,表示正数,首位1,表示负数

什么是补码?

1、正整数的补码是基本身的二进制数

2、负整数的补码是:

先求该负整数相对应的正整数的二进制代码,然后全部取反,末尾加1,不够位数时,左边全部补1。

不哆位数的解释:如要存储int型的整数,一般是4个字节大小,那32位二进制,如果一串负整数对应二进制码不够32位,则左边全部补1。

已经补码求原数?

如果首位是0,则表明是正整数,直接把二进制转成十进制即可;

如果首位是1,则表明是负整数,则将所有位取反,末尾加1,所得即是该负整数的绝对值。

溢出的问题?

int i = 128;则转成补码应该是:

00000000000000000000000010000000,但如果把128赋给char型,即一个字节,则其补码是10000000,它是一个负数(-128),也就是说char型最高存储-128-127之间的数,再多就会溢出;

在进行不同类型相互赋值时经常会出现这样 的问题“丢失进度”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值