10无4个10加什么符号等于110无4个10加什么符号等于110无4个10加什么符号等于110等于4怎么算

实验二 无符号十进制数加_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
实验二 无符号十进制数加
上传于||文档简介
&&理工大实验报告,欢迎参考。。。
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢h2appy 的BLOG
用户名:h2appy
文章数:611
评论数:123
访问量:1299929
注册日期:
阅读量:5863
阅读量:12276
阅读量:384413
阅读量:1075710
51CTO推荐博文
1、IP地址转换为32位无符号整数原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个无符号32为整数。举例:一个ip地址为10.0.3.193每段数字 相对应的二进制数10 0 3 193 组合起来即为:11 ,转换为10进制就是:,即该IP地址转换后的数字就是它了。&2、32位无符号整数转换为IP地址原理:把这个32位无符号整数转换成一个32位二进制数。从左到右,每8位进行一下分割,得到4段8位的二进制数,把这些二进制数转换成整数然后加上”.”就是这个ip地址了举例:二进制表示形式为:11 分割成四段:11,,分别转换为整数后加上“.”就得到了10.0.3.193。3、子网&&& IP地址&&&&&&&&&&&&&  01.********& (192.168.1.*)&&& 子网掩码&&&&&&&&&&&  11.& (255.255.255.0)&&& AND运算得到子网地址  01.& (192.168.1.0)&&& 192.168.0.2/24中的24表示有24个二进制1和8个0组成掩码,即255.255.255.0,&&& 即11
了这篇文章
类别:┆阅读(0)┆评论(0)&&/&&&&/&&
整型数据即整数。
整型数据的分类
整型数据的一般分类如下:
基本型:类型说明符为int,在内存中占2个字节。
短整型:类型说明符为short int或short。所占字节和取值范围均与基本型相同。
长整型:类型说明符为long int或long,在内存中占4个字节。
无符号型:类型说明符为unsigned。
无符号型又可与上述三种类型匹配而构成:
无符号基本型:类型说明符为unsigned int或unsigned。
无符号短整型:类型说明符为unsigned short。
无符号长整型:类型说明符为unsigned long。
下表列出了C语言中各类整型数据所分配的内存字节数及数的表示范围。
类型说明符
-,即 -215~(215-1)
unsigned int
0~65535,即 0~(216-1)
-,即 -215~(215-1)
unsigned short int
0~65535,即 0~(216-1)
-~,即 -231~(231-1)
unsigned long
0~,即0~(232-1)
整型数据在内存中的存放形式
如果定义了一个整型变量i:
数值是以补码表示的:
正数的补码和原码相同;
负数的补码:将该数的绝对值的二进制形式按位取反再加1。
例如:求-10的补码:
由此可知,左面的第一位是表示符号的。
各种无符号整型数据所占的内存空间字节数与相应的有符号类型量相同。但由于省去了符号位,故不能表示负数。
以13为例:
整型数据的表示方法
上面讲到的整数,都是十进制。在C语言中,常用的还有八进制和十六进制。下面集中讲解一下:
1) 十进制数
十进制数没有前缀。其数码为0~9。
以下是合法的十进制数:237、-568、6;
以下是不合法的十进制数:023 (不能有前导0)、23D (含有非十进制数码)。
在程序中是根据前缀来区分各种进制数的。因此在书写时不要把前缀弄错造成结果不正确。
2) 八进制数
八进制数必须以0开头,即以0作为八进制数的前缀。数码取值为0~7。八进制数通常是无符号数。
以下是合法的八进制数:015(十进制为13)、0101(十进制为65)、0177777(十进制为65535);
以下是不合法的八进制数:256(无前缀0)、03A2(包含了非八进制数码)、-0127(出现了负号)。
3) 十六进制数
十六进制数的前缀为0X或0x。其数码取值为0~9,A~F或a~f。
以下是合法的十六进制数:0X2A(十进制为42)、0XA0 (十进制为160)、0XFFFF (十进制为65535);
以下是不合法的十六进制数:5A (无前缀0X)、0X3H (含有非十六进制数码)。
4) 整数的后缀
可以用后缀&L&或&l&来表示长整型数。例如:
十进制长整型数:158L (十进制为158)、358000L (十进制为358000);
八进制长整型数:012L (十进制为10)、077L (十进制为63)、0200000L (十进制为65536);
十六进制长整型数:0X15L (十进制为21)、0XA5L (十进制为165)、0X10000L (十进制为65536)。
长整型数158L和基本整型数158 在数值上并无区别。但对158L,因为是长整型数,C编译系统将为它分配4个字节存储空间。而对158,因为是基本整型,只分配2 个字节的存储空间。因此在运算和输出格式上要予以注意,避免出错。
无符号数也可用后缀表示,整型数的无符号数的后缀为&U&或&u&。例如:358u、0x38Au、235Lu均为无符号数。
前缀,后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整型数A5,其十进制为165。
几个整型变量的定义:
int a,b,c;
// a,b,c为整型变量
// x,y为长整型变量
unsigned p,q;
// p,q为无符号整型变量
【例3-2】整型变量的定义与使用。
#include &stdio.h&
int main(){
int a,b,c,d;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(&a+u=%d,b+u=%d\n&,c,d);
整型数据的溢出
【例3-3】整型数据的溢出。
#include &stdio.h&
int main(){
printf(&%d,%d\n&,a,b);
注意:以上结果是在TC2.0下得出的;在VC6.0下,输出值是 3。因为 int 类型在 TC2.0下默认是short int,占2个字节,在VC6.0下默认是 long int,占4个字节,32768不会导致溢出。将 a = 32767 改成 a =
后即可看到溢出。
【例3-4】不同类型变量赋值
#include &stdio.h&
int main(){
int a,b,c,d;
printf(&c=x+a=%d,d=y+b=%d\n&,c,d);
从程序中可以看到:x、y是长整型变量,a、b是基本整型变量。它们之间允许进行运算,运算结果为长整型。但c、d被定义为基本整型,因此最后结果为基本整型。本例说明,不同类型的量可以参与运算并相互赋值。其中的类型转换是由编译系统自动完成的。有关类型转换的规则将在后面介绍。
推荐文章 TOP10如何在PLC里将双字的十六进制数DW#16#D4DB71FB换成无符号的数
查看: 1290|
摘要: 如何在PLC里将双字的十六进制数DW#16#D4DB71FB换成无符号的数,正是目前PLC自身不能解决的问题,以西门子S7-200为例,该PLC内的存储器存储整数的最小单元为字节,2个字节组成一个字,2个字构成一个双字, ...
如何在里将双字的十六进制数DW#16#D4DB71FB换成无符号的数,正是目前PLC自身不能解决的问题,以西门子S7-200为例,该PLC内的存储器存储整数的最小单元为字节,2个字节组成一个字,2个字构成一个双字,双字即为PLC存储整数的最大的存储单元。PLC对字节定义为无符号数,即字节可传递显示16进制数0~FF(即10进制数0~255),而对于字与双子存储器定义为有符号数,即:其最高位定义为存储数的符号位,当最高位=0时表示为此数为正数,当最高位=1时表示此数为负数。如将16进制正数“16#9673”送入MW0,MW0的各位值为:11_0011,由于其最高位M0.7=1&,故在监视状态下,MW0显示的不是正数38755,而是负数-26781。见下图:
&&&&&&本来是正数存入存储器里,可是存储器显示的数却变成负数,如对次数进行加减乘除运算,也是按负数进行,这给数据监视及对数据计算整理带来极大的不便。
&&&&&&如何解决字与双字在存储的数其最高位=1时,在监视状态下能显示其正数值而不出现负数值呢?请见以下解析:
&&&&&&&1、对于最高位=1的字存储器,要使它不显示负数,可将它传递给双字存储器。用双字存储器显示其存数值即可解决显示正数值而不会显示负值。即:令该字的上一个字存储器=0,如:MW2&=&16#9763,可令MW0=0,监视MD0双字存储器,其MD0的显示值即为正数值,见下图中的MOV_DW的显示值。
&&&&&&&&&2、&&对于最高位=1的双字存储器,由于PLC无四字存储器,故不能采用上述1的方法来实现正数显示,但可以采用下面的思路编程来实现:
&&&&&&&&用二个存储器(一个双字与一个单字)分别显示该数的前后二部分数字:用双字存储器显示该数百位以上的部分数值,用单字存储器显示该书的十位与个位2为数值。将这二个存储器数字串联相接的数字,即为该数转换为10进制数的正数值。举例:一个16进制数转换为10进制数,将转换后的数的百位以上的数字部分送入双子存储器内,其值为:;而转换为10进制数的百位以下的数字部分送入单子存储器内,其值为:55。则该16进制数转换为10进制的数为:。
&&&&&&&&编程思路:1、将16进制的双字正数送入MD1,其MD0值=MD1数÷256(即16#100)。再将MD0÷100×256——&VD0,&则VD0值即为MD1÷100的整数部分,将它转换为10进制数送入VD0,则VD0就不会显示负值,而且此VD0值的最小单位值1为10进制数的百位数(即=100)。&MD0÷100的余数部分加上MD1的最低字节(MB4)值—&MW4,再进行这样整理:MW4-100&&&0&则VD0&+&1,直到MW4&&&100为止。此时的VD0值为原MD1数转换为10进制的百位以上的数字部分,而MW4值为原MD1数转换为10进制的百位以下的十位与个位的数字部分。
&&&&&&&&&将双字单元的16进制数转换为无符号的10进制数的程序
&&&&&&&下面是将双字的十六进制数&DW#16#D4DB71FB送入MD1,&按上面程序运行,在监视状态下,转换成无符号的正数(见网络6中的VD0与VW4),
&&&&&&&&&即:MD1&=&16#D4DB71FB&=&
&&&VD0*100+VW4=0+&55&=&
&&&&对于最高位=0的双字数,带入上程序,运行结果也是正确的,见下图:
&&&&&&&&即:MD1&=&16#74DB71FB&=&
&&&&&&VD0*100+VW4=0+19&=&
&&&&&对于最高位=0的数可不用运行上述编程,直接用MD1-&VD1,&其VD1即可在监控下显示10进制数值,故可将原网络6改为下面2条编程语句(见下图):在最高位=0时,其M1.7=0,故网络6运行,其VD1值即为10进制的转换值。在最高位=1时,其M1.7=1,故网络7运行,其VD0与VW4值串联相接值&即为10进制的转换值。
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:

我要回帖

更多关于 1到9加运算符号等于6 的文章

 

随机推荐