【二进制简单讲解】(自用改版)

二进制

先说一下c语言里面有一个数据类型int代表的意思是整数
比如我定义一个整数 x : int x
在c语言里面跟数学不一样,因为存在计算机里肯定是有内存的不是无限大的所以int有上限是-2147483648~2147483648

误点:

不是求二进制的时候是下取整,而是在整数运算的时候,两个整数用除法是下取整,比如:5 / 2 = 2 (" / "的意思是除),10 / 3 = 3
介绍一下它的含义:
下取整:一个小数下取整就是变成不大于这个小数的最大整数
上取整:一个小数上取整就是变成不小于这个小数的最小整数

%介绍

“%”在c语言里面意思是取余数,比如5 % 3 = 2, 10 % 3 = 1,6 % 2 = 0
下面开始介绍二进制:
一个int范围的正整数最多二进制是32位
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
位数编号从大到小
1,先看0的二进制表示都写出来的话是:
00000000000000000000000000000000 总共32个零
一个数的二进制每一位不是1就是0,那么含义是什么呢,含义就是0 或者是1 乘 2的这个位数幂,比如第3 位是1,那么就是23乘1,再次注意位数是从0开始倒着数的
一般情况下二进制前面如果一堆0的话前面的0可以省略叫省略前导零,比如6:它的二进制是1 1 0,实际是 0 0 0 0 0…1 1 0,前面省略了29个零,那么怎么给你一个二进制求10进制整数呢

二进制求十进制

比如给你一个二进制数为:1010
为了更清楚这里不省略零
1010也就是
-0 --0 --0 --0 -0 --0 --0 --0 -0 --0 -0 --0 --0 -0 --0 --0 --0 -0 -0 --0 -0 --0 0 0 0 0 0 0 1 0 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
下面是位数下标
那么这个二进制数的十进制表示就是:23乘1+ 21乘1 = 10,其它位呢都是2i乘0(i是下标)

十进制求二进制

有两中方法
1基本方法:
还记得%是取余嘛,
给你一个数n求二进制表示
(接下来讲解两行数字第一行是二进制,第二行是位数)
为了清楚设一个数 y 代表余数
我们要一直做以下两步直到要求的数为零(二进制从后位往前写)
1,y = n % 2,把y写入最低位(下一次写高一位)
2,n 变成 n / 2
可能有点抽象?那举个例子用你最熟悉的6

1.(第一次循环写入的是第0位)

y = 6 % 2 ,y = 0写入二进制变成
-0 --0 --0 --0 -0 --0 --0 --0 -0 --0 -0 --0 --0 -0 --0 --0 --0 -0 -0 --0 -0 --0 0 0 0 0 0 0 0 0 0 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

2.

6 变成 6 / 2 = 3

(再次循环)1.(第二次循环写入的是第1位)

y = 3 % 2, y = 1写入二进制变成
-0 --0 --0 --0 -0 --0 --0 --0 -0 --0 -0 --0 --0 -0 --0 --0 --0 -0 -0 --0 -0 --0 0 0 0 0 0 0 0 0 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

2.

3 变成 3 / 2 = 1(注意整数除法是下取整1.5 - > 1)

(再次循环)1.(第三次循环写入的是第2位了)

y = 1 % 2, y = 1写入二进制变成
-0 --0 --0 --0 -0 --0 --0 --0 -0 --0 -0 --0 --0 -0 --0 --0 --0 -0 -0 --0 -0 --0 0 0 0 0 0 0 0 1 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

2.

1 变成1 / 2 = 0(下取整变成不大于这个数的最大整数0.5 - > 0)
至此循环结束6 变成了0
最后的二进制表示是
-0 --0 --0 --0 -0 --0 --0 --0 -0 --0 -0 --0 --0 -0 --0 --0 --0 -0 -0 --0 -0 --0 0 0 0 0 0 0 0 1 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
省略前导0变成:
1 1 0
over
文章至此结束,如还有疑问请转人工

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值