PortDock

정수·진수 변환기

HEX·10진·2진 값을 8·16·32비트로 바꿉니다. 부호 있는 값(2의 보수), BCD, 그레이 코드, Modbus 레지스터 바이트 순서(ABCD·CDAB 등)까지 한 화면에서.

결과
부호 없는 10진
부호 있는 10진 (2의 보수)
HEX
2진
BCD 로 읽으면
2진 → 그레이 코드
그레이 코드 → 2진
바이트 순서
순서보낼 때입력을 이 순서로 받았다면 (부호 없음 / 있음)

값을 바꾸면 바로 다시 계산합니다. 계산은 이 브라우저 안에서만 하고, 입력한 값은 어디에도 보내지 않습니다.

2의 보수 — 음수가 65535 로 보일 때

  • 레지스터 하나는 16비트라 0~65535 를 담습니다. 장비가 음수를 보내면 맨 위 비트가 1인 값이 오고, 이것을 «부호 있는 16비트» 로 읽으면 음수가 됩니다: 값 − 65536.
  • 예: FFFF = 65535 = −1, FE0C = 65036 = −500. 매뉴얼의 자료형 칸이 INT16(signed)인지 UINT16(unsigned)인지 보고 읽는 쪽을 맞춥니다.
  • 32비트는 같은 방식으로 값 − 4294967296 입니다. 레지스터 두 개를 어떤 순서로 붙이는지는 아래 «바이트 순서» 표를 봅니다.

BCD — 16진 표시가 그대로 10진처럼 보이는 값

  • BCD 는 10진 한 자리를 4비트(0~9)로 담습니다. 1234 는 0x1234 가 되고, 10진으로 읽으면 4660 으로 보입니다. 시각·카운터 값이나 일부 PLC 명령이 BCD 를 씁니다.
  • 어느 4비트라도 A~F 이면 BCD 가 아닙니다. 16비트에는 0~9999, 32비트에는 0~99999999 를 담습니다.

그레이 코드

이웃한 값끼리 비트 하나만 바뀌는 부호입니다(g = b XOR (b ≫ 1)). 0~7 은 000·001·011·010·110·111·101·100 입니다. 절대형 엔코더의 출력 형식으로 쓰이므로, 엔코더 매뉴얼이 그레이 코드 출력이라고 하면 «그레이 코드 → 2진» 값을 위치로 씁니다.

바이트 순서 표 읽기

«보낼 때» 는 이 값을 그 순서로 보낼 때의 바이트입니다. A 는 값의 가장 높은 바이트입니다. Modbus 레지스터 하나 안에서는 높은 바이트가 먼저 오지만(규격 §4.2), 32비트 값을 레지스터 두 개에 싣는 순서는 장비가 정합니다. 받은 바이트를 그대로 HEX 로 넣고 «이 순서로 받았다면» 열에서 매뉴얼의 예시 값과 맞는 줄을 찾으면 그 장비의 순서입니다.

자주 묻는 것

HEX FFFF 는 10진 몇인가요?

부호 없는 16비트로 읽으면 65535, 부호 있는 16비트(2의 보수)로 읽으면 −1 입니다. 장비 자료형에 따라 다릅니다.

음수를 HEX 로 바꾸려면?

입력 형식을 «10진» 으로 두고 −500 처럼 넣으면 고른 비트 수의 2의 보수 HEX(16비트면 FE0C)가 나옵니다.

BCD 와 HEX 는 무엇이 다른가요?

HEX 는 값을 16진으로 적은 것이고, BCD 는 10진 자리를 4비트씩 담은 것입니다. 값 1234 는 HEX 로 04D2, BCD 로 1234(0x1234)입니다.

float(실수)는요?

32·64비트 실수(IEEE 754)는 Modbus 실수 변환기에서 네 바이트 순서를 함께 볼 수 있습니다.

레지스터 두·네 개를 float32·float64 로 읽으려면 Modbus 실수 변환기.

출처