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.