C语言二进制(原码,反码,补码)

文章介绍了二进制存储中的原码、反码和补码概念,强调了内存中通常使用补码表示整数。对于正负数,正数的原码即补码,而负数需通过原码取反加1得到补码。首位为1表示负数,首位为0表示正数。此外,阐述了二进制与十进制之间的转换方法,包括正数和负数的转换规则。在C语言中,整数的二进制位数由其类型决定,如int型通常是32位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.存储,分类

整数的二进制有:原码,反码,补码。一般存储到内存中的是补码。

2.正负数原,反,补的关系

整数有正数和负数之分,

正数的原码=补码;

负数则不一样:

负数的反码=原码符号位不变,其他位按位取反

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

3.符号位(判断正负)

整数的二进制通过首位数字来判断正负,即符号位,首位为1,则为负数;首位为0,则为正数。

4.二进制和十进制的关系
二进制转十进制:
正数:从右边向左边二进制数依次乘以2的次方数,如00101010转10进制:

(0 * 2的零次方) + (1* 2的一次方)+ (0 * 2 的二次方)+(1 * 2的三次方) +(0 * 2的四次方) +(1* 2的五次方) + (0 * 2的六次方) + (0 * 2的7次方) = 0 + 2 + 0 + 8 + 0 + 32 + 0 + 0 = 42

负数:先减1取反,在计算十进制

如1101011是负数,像转换成10进制,则减一取反为00010101,然后计算对应的十进制为21,所以最终结果是-21.

十进制转二进制

采用"除2取余,逆序排列"法:

1.首先用2整除一个十进制整数,得到一个商和余数

2.然后再用2去除得到的商,又会得到一个商和余数

3.重复操作,一直到商为小于1时为止

4.然后将得到的所有余数全部排列起来,再将它反过来(逆序排列),切记一定要反过来!

假设我们现在需要将42转为二进制,那我们怎么做呢,如下

    • 二进制的位数

在C语言中,对于移位,与,或,异或符号,需要写出完整的二进制,那么一个二进制到底有多少数呢?这一般都取决于这个数前面的类型,如果这个数是int型,int占4个字节,一个字节8个比特位,所以这个数的内存为32个比特位,即是由32 个数字组成二进制数字,一般前面补0.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值