【C语言】二进制
程序员文章站
2022-03-08 14:37:18
...
1、一个字节可以分成八段,每段可以记录一个0或者1
2、要想把一个数字记录到字节里就必须首先把它拆分成八个0或者1
3、采用一组0或者1表示数字的方法叫二进制
4、任何数字既可以用二进制方式表示也可以用十进制方式表示
5、计算机里只能采用二进制方式表示数字
6、二进制表示方式里每个数位有一个编号,最右边数位的编号是0,向左依次递增
7、二进制表示方式中如果某个数位的内容是1则它单独代表的数字就是2的数位编号次方
8、二进制表示方式中如果两个相邻数位的内容一样则左边数位代表的数字是右边数位的两倍
9、以上规则只适用于二进制表示的非负数
10、二进制加一的时候要把从编号为0位置开始的连续多个1都变成0,把最右边的0变成1
11、二进制表示的非负数转换成十进制的时候只需要把每个内容为1的数位单独转换然后把转换结果求和就可以了
0000 0101 = 2的2次方 + 2的0次方
= 4 + 1
= 5
0010 1000 = 2的5次方 + 2的3次方
= 32 + 8
= 40
十进制表示的非负数转换成二进制的方法
12 *******0
6 ******0
3 *****1
1 ****1
0 ****
转换结果是00001100
12、对原始数字多次做除以2并保留整数部分的操作可以得到一组数字,用其中的每个数字除以2取余可以得到一个数位的内容,把所有数位内容从后向前书写就得到转换结果
91 1
45 1
22 0
11 1
5 1
2 0
1 1
0 0
转换结果是0101 1011
13、负数的十进制和二进制之间不能直接转换,必须借助相反数
14、负数十进制和二进制之间转换分成三歩,首先计算相反数,然后把得到的相反数进行转换,最后再根据转换结果计算相反数
15、把二进制中每个数位的内容变成相反数然后再加一就得到相反数的二进制
-14
14
0000 1110
1111 0001 + 1 = 1111 0010
16、有符号类型数字的二进制表示方式中最左边的数位可以用来判断数字的符号,这个数位叫符号位。符号位为1说明数字是负数,符号位为0说明数字是非负数。
1100 1011
0011 0100 + 1 = 0011 0101
53
-53
/*
* 二进制练习
* */
#include <stdio.h>
int main() {
int num = 0;
printf("请输入一个数字:");
scanf("%d", &num);
printf(" %d\r", num % 2);
num = num / 2;
printf(" %d\r", num % 2);
num = num / 2;
printf(" %d\r", num % 2);
num = num / 2;
printf(" %d\r", num % 2);
num = num / 2;
printf(" %d\r", num % 2);
num = num / 2;
printf(" %d\r", num % 2);
num = num / 2;
printf(" %d\r", num % 2);
num = num / 2;
printf("%d\n", num % 2);
return 0;
}