无符号双整数转换为实数的方法

无符号双整数转换为实数的方法,第1张

符号整数转换为实数的方法如下:

1双整到实数用 DI-R指令,一个不带小数点的,一个有小数的。

指令中实际上没什么用的,可能是点个位置,以后在这里可以修改成别的数据调节VD28而不用重新加指令。

2简单来说,有符号整数用最高位作符号位,正数与原码相同,负数除符号位外取反加1,其实原理说的很清楚,但是如果拿来在编程语言中计算就太麻烦了,笔者推出用观察法来简单明了地说明计算方法。

以4字节的32位整数Integer为例排列说明:

二进制表示 十进制 代称

01111111111111111111111111111111 2147483647 B(最大值)

00000000000000000000000000000011 3

00000000000000000000000000000010 2

00000000000000000000000000000001 1

00000000000000000000000000000000 0

11111111111111111111111111111111 -1 C

11111111111111111111111111111110 -2

11111111111111111111111111111101 -3

10000000000000000000000000000000 -2147483648 A(最小值)

观察下即有:

数轴可以这样表示:A(-2147483648)—>---0—>---B(2147483647),其中: [A,0) 单调递增1;[0,B] 单调递增1

观察出以上规律后,可以得到以下:

设y=f(x),x为无符号整数,y为对应有符号整数,观察有:y>=0时,y=x; y<0时,y=x-z;(z为未知数)

按照示例数字C有:11111111111111111111111111111111 - z = -1

所以:

z=11111111111111111111111111111111 + 1

=100000000000000000000000000000000

=0x100000000

如何判断有符号整数(即y)的符号呢?两种方法:

用二进制位运算:x & 0x80000000 后是否等于 0x80000000

从表格中观察到如果x大于 1111111111111111111111111111111(正数最大值),都是负数

结论

转换方法: 根据上文判断无符号整数对应有符号整数的符号,如果正整数直接取原值就可以,负整数的话减掉一个中间值就行(如上文计算的4字节的32位整数为 0x100000000,其它位整数对应该值为2 二 进 制 位 数 2^{二进制位数}2 。

浮点数如果要转换成整数,首先要取整,转换成双整数,然后再转换成整数

还有个简单的方法,如:5000000e+001

就是510

的一次方,既后面的指数是几,把小数点往后移几位即可

2410000e+001

====241

2410000e+002=====241

实数和长整型一样占用2个字(4个字节)的空间,只是实数表示的是带有小数的数据,如8839,这就是实型,在程序中一般符号是REAL或FLOAT;而长整型也就是你说的双整数型只能表示没有小数的整数,如888833234,这就是长整型。

整型就是1个字(2个字节),表示的是-32768--32767之间的任意整数,它和字类型数据占同样的空间,区别是整型可以表示负数,如-235,也可以表示正数,如3212。

这些都是计算机领域的基础知识。

1,字:word

2,字节:byte

3,位:bit

4,int带符号16位整数

5,dint带符号32位整数,双整数

6,real:浮点数,实数,32位

7,1kb=1024字节, 1字=2字节,1双字=2字=4字节,1字节=8位

扩展资料:

1,32位平台:

(1)short在内存中占两个字节,范围为-2^15~ (2^15-1)

(2)int在内存中占四个字节,范围为-2^31~ (2^31-1)

(3)long在内存中占四个字节,范围为-2^31~2^31-1

2,无符号型:

(1)unsigned short在内存中占两个字节,范围为0~2^16-1

(2)unsigned int在内存中占四个字节,范围为0~2^32-1

(3)unsigned long在内存中占四个字节,范围为0~2^32-1

3,实型变量:

分单精度float和双精度double两种形式:float占四个字节,提供7~8位有效数字。double占八个字节,提供15~16位有效数字。

4,16位平台:

(1)整型(基本型):类型说明符为int,在内存中占2个字节。

(2)短整型:类型说明符为shortint或short,所占字节和取值范围均与整型(基本型)相同。

(3)长整型:类型说明符为long int或 long,在内存中占4个字节。

(4)无符号型:类型说明符为unsigned。

这是个转换指令。你问这个问题有点复杂哦。还是给你讲讲吧。。

我们生活和工作中使用的数据可分为二进制,八进制,十进制,十六进制等都是为了方便进行各种数学统计和计算以及用数学的方法解开自然运作的规律。

而PLC就是用解开这些规律的方法制作出来的一种电子器件。比如它可以用BOOL量(位)解开外界状态的通断和开关变化(0和1);它也可以用BYTE量(8个位)表示小于正整数255(十进制)的简单数据和字符的演算。

当然它还可以用WORD量(16个位)表示65535或+32767—— -32767这样大的数据。

那么再大的数据PLC又如何表示和计算呢?那么就要用到更大的32位数据和64位数据了。比如32位数据4294967295等,再大的就要64位了(注:目前小型和中型PLC还不直接支持64位数据计算)。另外32位数据还可以用作浮点数的表示,浮点数就有小数点的数据。为什么要这样呢?因为这是计算机的数据表示规律,和计算机的设计原则有关。而PLC也是计算机的一类。

I_DI,整数(INT)转为双整数(DINT)

DI_R,双整数(DINT)转为浮点数(实数REAL)

DIV_R,浮点数(REAL)除法

CTCH,未找到这条指令;

MUL_R,浮点数(REAL)乘法

ROUND,浮点数(REAL)取整为双整数(DINT)

I,即INT,(单)整数;

DI,即DINT,双整数;

R,即REAL,浮点数;

一般有四则运算符(加ADD、减SUB、乘MUL、除DIV)之后加“_I”,就是对整数进行运算;加“_DI”,就是对双整数进行算;加“_R”,就是对浮点数进行运算。

以上就是关于无符号双整数转换为实数的方法全部的内容,包括:无符号双整数转换为实数的方法、西门子PLC双整数转换为浮点数是怎么转换的、PLC 中,实数,整数型,双整数型的概念是什么最好举例。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3837887.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存