-
二进制、十进制、进制转换
2020-11-29 21:33:511.1 十进制转换二进制 例:252 252/2=126 余0 126/2=63 余0 63/2=31 余1 31/2=15 余1 15/2=7 余1 7/2=3 余1 3/2=1 余1 1/2=0 余1 二进制为:11111100 主要以被除数/除数=商 余数 直到商为0为止,从下往上只取余数,...二进制、十进制,进制转换
1.1 十进制转换二进制
例:252
252/2=126 余0
126/2=63 余0
63/2=31 余1
31/2=15 余1
15/2=7 余1
7/2=3 余1
3/2=1 余1
1/2=0 余1
二进制为:11111100主要以被除数/除数=商 余数
直到商为0为止,从下往上只取余数,就是换算的二进制数
1.2 二进制转换十进制
例:1001111001
1001111001=129+028+027+126+125+124+123+022+021+120
=1512+0+0+164+132+116+1*8+0+0+1
=512+64+32+16+8+1
=633
以上为二进制转换十进制公式129+028+027+126+125+124+123+022+021+120
1后边为9位数,所以1要乘以2的9次方,0后边有8位,所以要乘2的8的次方,从左到右,以此类推相加,就能得出十进制数 -
二进制与十进制的转换
2013-09-12 20:53:56[b]二进制的1101转化成十进制[/b] IP地址分5类,A、B、C为基本类 A类:1.0.0.1—126.255.255.254 B类:128.0.0.1—191.254.255.254 C类:192.0.1.1—223.255.254.254 D类为多播地址,不常用 E类保留 ...[b]二进制的1101转化成十进制[/b]
IP地址分5类,A、B、C为基本类
A类:1.0.0.1—126.255.255.254
B类:128.0.0.1—191.254.255.254
C类:192.0.1.1—223.255.254.254
D类为多播地址,不常用
E类保留
1101=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13
转化成十进制,要从右到左,用二进制的每个数去乘以2的相应次方,次方要从0开始
[b]十进制整数转二进制[/b]
如:255=(11111111)B
255/2=127=====余1
127/2=63======余1
63/2=31=======余1
31/2=15=======余1
15/2=7========余1
7/2=3=========余1
3/2=1=========余1
1/2=0=========余1
789=1100010101
789/2=394.5 =1 第10位
394/2=197 =0 第9位
197/2=98.5 =1 第8位
98/2=49 =0 第7位
49/2=24.5 =1 第6位
24/2=12 =0 第5位
12/2=6 =0 第4位
6/2=3 =0 第3位
3/2=1.5 =1 第2位
1/2=0.5 =1 第1位
怎么判断IP地址的是否在同一网段。 相信好多人都认为IP只要前三段相同,就是在同一网段了,其实,不是这样的,同样,我想把IP的每一段转换为一个二进制数,这里就拿IP:192.168.0.1,子网掩码:255.255.255.0做实验吧。
192.168.0.1
11000000.10101000.00000000.00000001
(这里说明一下,和子网掩码一样,每段8位,不足8位的,前面加0补齐。)
IP 11000000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
在这里,向大家说一下到底怎么样才算同一网段。
[color=red]要想在同一网段,必需做到网络标识相同,那网络标识怎么算呢? 各类IP的网络标识算法都是不一样的。A类的,只算第一段。B类,只算第一、二段。C类,算第一、二、三段。[/color] 算法只要把IP和子网掩码的每位数AND就可以了。
AND方法:0和1=0 0和0=0 1和1=1 如:And 192.168.0.1,255.255.255.0,先转换为二进制,然后AND每一位
IP 11000000.10101000.00000000.00000001 子网掩码 11111111.11111111.11111111.00000000 得出AND结果 11000000.10101000.00000000.00000000
转换为十进制192.168.0.0,这就是网络标识,
再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与IP:192.168.0.1 AND 得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1, 这0.0.0.1就是主机标识。
要想在同一网段,必需做到网络标识一样。
我们再来看看这个改为默认子网掩码的B类IP
如IP:188.188.0.111,188.188.5.222,子网掩码都设为255.255.254.0,在同一网段吗? 先将这些转换成二进制
188.188.0.111
10111100.10111100.00000000.01101111
188.188.5.222
10111100.10111100.00000101.11011010
255.255.254.0 11111111.11111111.11111110.00000000
分别AND,
得 10111100.10111100.00000000.00000000
10111100.10111100.00000100.00000000
网络标识不一样,即不在同一网段。 -
二进制转换
2019-12-12 10:43:57十进制转二进制 除二取余,余数从右向左组成二进制 例如:126 126 63 31 15 7 3 1 0 0 0 1 1 1 1 1 1 转成二进制数1111110 二进制转十进制 每一位 x 2(当前从右数下标次幂)后相加 二进制数为:1111110 从右...十进制转二进制
除二取余,余数从右向左组成二进制
例如:126
126 63 31 15 7 3 1 0 0 1 1 1 1 1 1 1
转成二进制数 1111110
二进制转十进制
每一位 x 2(当前从右数下标次幂)后相加
二进制数为:1111110
从右开始:
0 x 2(0次幂) = 0;
1 x 2(1次幂) = 2;
1 x 2(2次幂) = 4;
1 x 2(3次幂) = 8;
1 x 2(4次幂) = 16;
1 x 2(5次幂) = 32;
1 x 2(6次幂) = 64;
0+2+4+8+16+32+64 = 126
-
171023—各进制数输出:二进制转换&用格式控制符输出八,十,十六进制数
2017-10-24 11:13:50正文原题:输出一张数表,内容是1~126各个数字的十进制,二进制,八进制,十六进制。 初生牛犊啊。。第一反应是:这个计算机应该会自己做吧?我用那什么叫啥来着。。格式控制符就好了吧?一翻书,格式控制符有是有...插一句:昨天做的“剪刀石头布”忘掉了双方出同一种(即平局)的可能。只需在原有的if …else语句之中再内嵌一个if就好。
正文
原题:输出一张数表,内容是1~126各个数字的十进制,二进制,八进制,十六进制。
初生牛犊啊。。第一反应是:这个计算机应该会自己做吧?我用那什么叫啥来着。。格式控制符就好了吧?一翻书,格式控制符有是有。。只有十进制(dec),八进制(oct),十六进制(hex)。没有二进制,考虑到二进制的英文单词(binary)。。1.鸡贼一下,不会是有bin没写出来吧??
2.而且,这个控制符可以实现直接将十进制数按我想要的格式输出吗?尝试了一下,对于书上给出的三种控制符,只要有个数,都可以直接通过编程时写进来实现各种数制的输出。
int a; cout<<dec<<a<<endl; cout<<oct<<a<<endl; cout<<hex<<a<<endl;
而臆想出来的bin。。也显然不存在,果断在编译的时候就会报错。
问题到这里已经解决了3/4。但剩下的那1/4现在才是重要的:怎样把一个十进制数转变为二进制数输出?
这个问题,如果手动进行的话,思路明了,对任意的n除2做带余除法,逆向取余即可得其二进制数。
但初步考虑至少有两个问题难以解决:- 你怎么知道会做多少步呢?你不知道,就不好找一个合适的变量(或者说足够多的变量)来储存每步得到的余数
- 怎么逆向输出这些存下来的数?
可以看出来。以上所谓初步考虑基于这样一个假设:按从后至前的顺序输出一串由多步带余除法之后得到的余数。
问天问地问自己:见过么?没见过。。学过么?没学过。。那怎么写。。?问度娘,看了好几个版本,满篇不认识的函数。
瞎翻书。书上有个例题,是把二进制转换成十进制。它用的方式是按从右到左的顺序读取输入的一个二进制数的各位字符,将各位乘上对应的权重,然后累加,即有结果。
初看感觉对我的问题没什么启发,因为移位读取我不会用,其次移位读十进制数。。。别逗了。但仔细想了想,那个累加好像可以解决刚才自己想到的问题。。
再稍微鸡贼下。。所谓逆向取余法。各个余数可是直接按数位排序,而不是加和啊。。
我难道非要用“二进制表示的数”来表示一个数的二进制吗?
如果我用十进制思维去表示呢?
逆向取余法有一个特点,最先得到的余数在最后的示数中是最低位。这样的话,如果用累加的方式,就很方便了。
如果我把每次得到的余数乘上一个如果它处在一个十进制数中该有的权重。再逐个累和。不就能的到一串1,0组合成的数字了吗?这串数字在计算机看来还是十进制数,因为它是由常规的十进制运算方式得到的,
它也不是一串仅仅由1,0按一定顺序排列得到的字符串(最先考虑的解决方案)。
它是个数字,是个人看来可以理解为二进制的东西。talk is cheap,show me the code..
这里为了达到每一步都清晰的效果,最大程度地碎化了各个步骤,并且毫不考虑变量的数量。(此举使学长hin不爽。。)
思路确定之后写的时候感觉前几天写循环语句时积累的经验十分有用,比如,各语句该放的先后顺序,选择合适的计数器以及循环判断条件。。etc。运行结果很棒。
但我们还是不能忘初心的对吧。原题还是要组合起来解决掉。
其实现在剩下的问题也就是选一个循环结构,然后把几个语句的顺序做调整(就像扯线子拧螺丝把几台设备连接起来调试一样)
原码:#include<iostream> using namespace std; int main() { cout<<"decimal"<<'\t'<<'\t'<<"binary"<<'\t'<<'\t'<<"cotal"<<'\t'<<'\t'<<"hexadecimal"<<endl; int d; int n,m,s,t,q,x; //光为了计算这个二进制数,就定义了5个变量。 for(d=1;d<=126;d++) { s=0;t=1;n=d;//还记得第一次用累加器的时候给初值时它的位置吧? do { m=n%2; x=n/2; q=m*t;//t是以10为阶的示数权重 s=s+q;//s充当累加器 t=t*10; n=x; }while(x>0); cout<<dec<<d<<'\t'<<'\t'<<s<<'\t'<<'\t'<<oct<<d<<'\t'<<'\t'<<hex<<d<<endl; } }
因为内容的多。。这次成了有史以来写过的最胖的代码。。看着很充实{笑哭。。}
留张图吧:P.S:
有感:- 编程真正难的地方根本不是编程语言自己要求的语法,书写规范这类东西。而是,你怎么把一个问题抽象出来,用合适的方式表示它,合适的模型描述它,怎么考虑各种不同情况,并把他们用一个合适的结构组合起来,各部放在该有的位置,让其不会出错。这里有时候你会引入很多在原问题里看不出来的量(比如为配合while判断语句时)。我想这才是所谓的编程能力和它对人的思维的锻炼所在。
- 在作出这个东西之前,我作出过其他几个东西,在作出那些东西之前,我觉得这个东西好难,没思路,但思考一会,尝试几次,修改几回。自己也能作出想要的结果。但这次的困难让自己觉得无法克服(特别是百度了几种发现完全看不懂之后),让自己觉得这个凭自己现在的知识能力不可能完成,这不是借口吧?这是事实哎。。我没学过。但硬着头皮做下去之后,发现也能成了。并不是说我自己有多厉害。而是说:对待自己初次遇到的,看不出思路的问题,别那么快放弃。坚持一会,或许就成了。
这是我学习编程两周后的感触,存在这里。
-
进制转换方法
2020-11-28 17:32:11在网络中传输的各种信息都是靠二进制传输的,进制分为 二进制、八进制、十进制、十六进制 二进制:0、1逢二进一(二进制转十进制) 1011011100=129+127+126+124+123+122=512+128+64+16+8+4=732 十进制:0 1 2 3 4 5 ... -
Description 输入一个十进制数N,将它转换成二进制数输出。 Input 输入数据有多个,每个单独占一行。输入以...
2020-04-25 16:12:43输入一个十进制数N,将它转换成二进制数输出。 Input 输入数据有多个,每个单独占一行。输入以0结束。 Output 每组输入数据对应的二进制形式,每组占一行。 Sample Input 10 126 0 Sample Output 1010 1111110*/ #... -
给你IP地址让你算出掩码(点分十进制),子网地址,广播地址。
2019-10-13 23:04:33给你IP地址让你算出掩码(点分十进制),子网地址,广播地址。...2:二进制 和十进制的转换记住(128,64,32,16,8,4,2,1)。 3:要知道要知道A B C类地址的数位是多少。A类0-126/B类128-191/C类192-223。记... -
二进制浮点数的精度丢失问题
2020-11-25 22:15:43二进制浮点数的精度丢失问题二进制浮点数介绍二进制组成部分丢失精度的情况10.3的二进制数:下面我们来看0.6的二进制表示0.3+0.6结果:我们再来看一组数据0.3+0.4还有一...十进制数0.3+0.6,因为计算机都是先转换成二进 -
求大佬解决一道 2^k进制数 算法题,我不知道哪里出错了,谢谢
2019-12-06 12:01:41将S从右起划分为若干个长度为k 的段,每段对应一位2^k进制的数,如果S至少可分成2段,则S所对应的二进制数又可以转换为上述的2^k 进制数r。 例:设k=3,w=7。则r是个八进制数(23=8)。由于w=7,长度为7的01字符... -
PHP详解ASCII码对照表与字符转换
2020-12-17 23:43:04一,通用的ASCII码对照表 图解ASCII码对照表图,以字符A为例Dec表示十进制,如65Hx表示十六...具体字符转换函数说明请参考[PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明]十进制转二进制 decbin() 函 -
byte与int强制转换
2017-06-21 14:14:53第一步十进制的130转换成二进制数据 1 0 0 0 0 0 1 0 第二步130是int类型是占4个字节的,所以在内存的表现形式是 00000000 00000000 00000000 10000010 做了截取后的结果为(byte 1字节 short 2字节 int 4字节 ... -
byte b = (byte)130; 结果为-126,为什么?
2017-04-13 15:07:55第一步十进制的130转换成二进制数据 1 0 0 0 0 0 1 0 第二步130是int类型是占4个字节的,所以在内存的表现形式是 00000000 00000000 00000000 10000010 做了截取后的结果为 10000010 通过观察最高位符号位... -
byte b = 130; //结果为-126 为什么啊?
2018-04-12 10:05:59数据130默认是int类型的十进制数据第一步十进制的130转换成二进制数据1 0 0 0 0 0 1 0第二步130是int类型是占4个字节的,所以在内存的表现形式是00000000 00000000 00000000 10000010做了截取后的结果为10000010... -
为什么(byte)130 在控制台输出为-126?
2018-10-08 22:19:331.将十进制的130转化为二进制 130 (int)0000-0000 0000-0000 0000-0000 1000-0010 占4个字节 (byte) 1000-0010 占1个字节 2.在计算机中存在的形式是补码1000-0010 将补码转换成原码 补码 1000-0010 减1得反码 ... -
第4章函数整理
2020-12-17 01:08:10设计一个函数toOcr(int n),实现把输入的一个十进制数转换为八进制数 输入格式: 十进制数。 输出格式: 与之对应的八进制数。 输入样例: 126 输出样例: 176 firstly, my previous 10_to_16 versi -
Linux系统:第十五章 Linux网络管理实战3(路由器)
2020-08-29 18:15:14十进制 数值:0~9 数位:123 位权:百位十位个位 二进制 数位:10 数值:0~1 位权:128-64-32-16-8-4-2-1 100—4 101—5 111—7 单户换算 比特=bit=b=1/0 字节=byte=B=8个比特 1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=... -
IP地址与子网掩码
2020-09-25 09:26:49分隔,计算机使用时会将每个十进制数转换成8bit的二进制数,所以IP地址使用二进制表示为32bit。 2)IP地址的组成 网络地址(网络位):子网的地址编号(一个网络地址代表一个子网) 主机地址(主机位):计算机在... -
IP地址的组成和分类
2020-02-01 11:08:10由32位二进制数字序列组成的数字序列,点分十进制,采用点将32为数字进行分割成4段,每段8位的二进制数,但二进制数不方便记忆,因此转换为10进制数,即点分十进制 IP地址的分类: IP地址的组成 {<网络号>... -
LWIP netconn TCP UDP测试 实例
2013-01-01 16:50:33本文由自己从网络上查资料整理而成 已经测试可用 ...在线IP地址转换器(二进制 十进制 十六进制转换) http://www.ab126.com/goju/1840.html LWIP netconn API函数下 实现的 TCP服务器 TCP客户端 UDP测 -
LWIP_TCP/IP
2018-03-13 13:31:23已经测试可用只需修改下就能用到项目中给需要的童鞋们参考平台(LM3S9B92+UCOSII+LWIP)在线IP地址转换器(二进制 十进制 十六进制转换)http://www.ab126.com/goju/1840.htmlLWIP netconn API函数下 实现的TCP... -
符号或其他实体的 JS的消息框
2012-05-04 10:27:13以下链接是百度里面的HTML转义... ... 这些符号要是以消息框或警报提示显示出来则要转换成十六进制 以下是十进制到二进制和十六进制转换器 http://www.ab126.com/system/2011-04-28/2647.html ----------------- -
初级选手常用网站推荐
2019-04-24 15:26:29推荐理由:可实现ASCII、十六进制、十进制、二进制之间的转换,任意输入其一可得另外三种表示形式。与计算机自带程序员计算器相比,支持复制,不用单个的输入数据,特别适合蓝牙广播数据转换。 2.... -
回复:51单片机如何实行两个灯同时亮,同时灭https://bbs.csdn.net/topics/392565415
2020-03-01 13:07:04假设IO口低电平点亮LED,先用计算器转换要使用的值,我这里用二进制转十进制的数组:{231,219,189,126} 使用的是STC89C52单片机 -
IPV4地址划分
2020-12-18 18:25:59IPV4地址: 由32为二进制构成 为了便于区分,将32位二进制转换为十进制数,以点隔开 类似于192.168.1.0 地址分类:ABCDE ABC类地址:单播地址 D类地址:组播地址 E类地址:保留地址 目前所用最广泛的就是 ABC 三类... -
编程卓越之道:卷一/二
2010-10-10 08:31:042.9 二进制编码的十进制(BCD)表示法 31 2.10 定点表示法 33 2.11 比例数格式(scaled numeric formats) 35 2.12 有理数表示法 38 2.13 获取更多信息 38 3 二进制算术与位运算 3.1 二进制数与十六进制数的... -
74系列芯片名称及解释
2009-07-27 09:19:1374ls184 bcd-二进制转换器 74ls185 二进制-bcd转换器 74ls190 同步可逆计数器(bcd,二进制) 74ls191 同步可逆计数器(bcd,二进制) 74ls192 同步可逆计数器(bcd,二进制) 74ls193 同步可逆计数器(bcd,二进制) 74ls... -
oracle number数据类型
2017-06-15 16:19:00oracle number数据类型 Number类型是oralce的数值类型,存储的数值的...以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。 语法: Number(p,s)... -
74LS系列集成块功能介绍
2010-03-29 08:27:4974ls184 bcd-二进制转换器 74ls185 二进制-bcd转换器 74ls190 同步可逆计数器(bcd,二进制) 74ls191 同步可逆计数器(bcd,二进制) 74ls192 同步可逆计数器(bcd,二进制) 74ls193 同步可逆计数器(bcd,二进制) 74ls... -
74HC系列PDF资料
2008-11-26 16:14:0474HC283 4位二进制全加器(带超前进位) 74HC298 4位2选1数据选择器 74HC365 六缓冲器/总线驱动(同相) 74HC366 六缓冲器/总线驱动(反相) 74HC367 六缓冲器/总线驱动(同相) 74HC368 六缓冲器/总线驱动...