c语言整数在存储单元中的存储方式

用整数的补码进行存放。

若是一个正数,则它的补码就是该数转为二进制;若是一个负数,它的补码就应先把该数的绝对值的二进制求出来,再按位取反,最后再加1。

如:用2个字节存储,求5的补码:

转为二进制为:00000000 00000101(即为补码)

若为-5则应为:

二进制:00000000 00000101

取反:11111111 11111010

加1:11111111 11111011

在整数存放单元中,第一位二进制用来表示正号或负号,1为负,0为正

因此2个字节的存储范围为:-2^15 ~ 2^15-1(正数方减一是因为:由于第一位二进制用于表示正负号,所以最大值为01111111 11111111=32767,则刚好等于10000000 00000000=2^15=32768)

当长字节向短字节强制转换时,只保留从右到左的几位短字节数,其余的抛弃

二进制数的运算

二进制的加、减、乘、除和十进制差不多,甚至可以用十进制来验算。

加法:1+1=10(向高位进1),1+0=1,0+1=1,0+0=0;列:101+110=1011

减法:1-1=0,1-0=1,0-1=1(向高位借1,则为10-1),0-0=0;列:110-101=1

乘法:1*1=1,1*0=0,0*1=0,0*0=0;列:110*101=

除法:1/1=1;0/0=0;0/1=0;1/0=0;列:110/101=1(和十进制一样,用减法)

and(与/&):有零则零;or(或/|):有一说一(和and相反);~(非运算):每位取相反的数字;^:(异或):两数相对应,相同取0,不同取1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值