일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- MelsecNet-G
- 폴링
- gauge
- rs-485
- DATAGRIDVIEW
- HI-Vacuum
- pressure
- rs-232
- cluster
- Gas box
- c# build date
- pc제어
- PMAC
- 시리얼통신
- melsec
- ION Gauge
- REGULATOR
- Dry etcher
- Polling
- MODBUS
- 드라이에쳐
- hivac
- VACUUM
- RS232
- 설비제어
- 레귤레이터
- 자동제어
- Helium
- CDG
- 가스
Archives
- Today
- Total
진공에 대해 알려주마.
IEEE-754 FLOATING POINT CONVERTER 본문
드라이버를 맹글어야 한다.
IEEE-754 Floating Point를 말이다.
새로운 장치가 IEEE-754를 사용한단다. 그럼 찾아봐야지. 역시 자료가 별로 없따.
" 나라 말씀이 거시기와 달라 ... "
세종 대왕 께서는 이미 알고 계셨던 것인가? 그 옛날 컴퓨터가 사용하는 데이터 구조가 서로 달라 이를 표준화하는 작업이 있었으니 이것중에 하나가 IEEE-754 규격이다.
고정된 데이타 사이즈에 부호+지수+숫자를 조합하여 실수를 표현하였다.
IEEE-754 Floating point converter 코드를 정리하였다.
이를 십진수로 다시 십진수를 이것으로 변환이 가능하다. 통신중 생각보다 많은 장치가 사용한다. 참고하시라.
아래 코드를 테스트 하면서 참조한 사이트
https://www.h-schmidt.net/FloatConverter/IEEE754.html
using System;
using System.Reflection;
class Program
{
static float IEEE754ToDecimal(uint ieee754)
{
// Extract the sign (1 bit)
int sign = (int)((ieee754 >> 31) & 1);
// Extract the exponent (8 bits)
int exponent = (int)((ieee754 >> 23) & 0xFF);
// Extract the mantissa (23 bits)
int mantissa = (int)(ieee754 & 0x7FFFFF);
// Calculate the decimal value using the IEEE 754 formula
float result = (sign == 0 ? 1 : -1) * (1 + (mantissa / (float)(1 << 23))) * (float)Math.Pow(2, exponent - 127);
return result;
}
static uint DecimalToIEEE745(double pValue)
{
// 32 Bit
float fValue = (float)Convert.ToDouble(pValue);
uint hex32 = BitConverter.ToUInt32(BitConverter.GetBytes(fValue), 0);
string sHex = String.Format("{0:X}", hex32);
return hex32;
}
static void Main()
{
double nUserVal = 123.456;
// Convert Decimal to IEEE754
uint ieee754 = DecimalToIEEE745(nUserVal);
Console.WriteLine("Convert IEEE754 to Deciamal : " + nUserVal.ToString() + " -> " + ieee754.ToString("X"));
// Convert IEEE754 to decimal
float decimalValue = IEEE754ToDecimal(ieee754);
Console.WriteLine("Convert Deciamal to IEEE754 : " + ieee754.ToString("X") + " -> " + nUserVal.ToString());
}
*
결과는
'진공 > 노하우' 카테고리의 다른 글
KeyDown, KeyPress and ...... (0) | 2025.03.03 |
---|---|
TabControl in C# (0) | 2025.01.18 |
설비 PC 제어 프로그램 관리 (0) | 2024.09.27 |
Excel에서 dataGridView 붙여넣기 (0) | 2024.08.06 |
가속, 주행, 감속 그리고 TACT (0) | 2023.11.01 |
Comments