- 16비트 모두 1일 경우 (1111111111111111 => -1)
- 2 ^ 16 = 0
- 2 ^ 16 - a = -a
- 2 ^ 16 - 1 = -1 (즉 1111111111111111)
void __fastcall TComm_PLC::SetDouble(unsigned char (*data)[2], int column, double value)
{
int temp = value;
if(temp < 0){
temp = temp * -1;
data[column][1] = 255 - temp / 256;
data[column][0] = 256 - temp % 256;
}else{
data[column][1] = temp / 256;
data[column][0] = temp % 256;
}
}
- 2 ^ 16 = 0
- 2 ^ 16 - a = -a
- 2 ^ 16 - 1 = -1 (즉 1111111111111111)
void __fastcall TComm_PLC::SetDouble(unsigned char (*data)[2], int column, double value)
{
int temp = value;
if(temp < 0){
temp = temp * -1;
data[column][1] = 255 - temp / 256;
data[column][0] = 256 - temp % 256;
}else{
data[column][1] = temp / 256;
data[column][0] = temp % 256;
}
}
댓글