2017-10-29 2 views
2

int32 인 것처럼 스칼라를 인쇄하려고합니다. 즉, 내가 2532063508을 가지고 있다면, 그것을 4 바이트로 쓰고 int32로 읽으면, 나는 -1762903788을 읽을 것입니다.Matlab에서 int32로 스칼라 인쇄하기

int32 Matlab의 기능을 사용하는 방식이 작동하지 않기 때문에 범위 외의 값인 [-2^31,2^31-1]은 가장 가까운 끝점에 매핑됩니다.

그래서 나는 typecast 사용하려 : 완벽

typecast(uint32(2532063508), 'int32') 

작품을하지만 작성하는 경우 예를 들어, -1, uint32()는 0을 반환하므로 실패합니다.

P. 나는 그것이 -1로 -1을 반환 할 때 입력으로 부호가있는 정수에서도 작동하기를 원한다.

제안 사항은 무엇입니까?

답변

2

당신은 int64의 계산은 다음 uint32로 변환 할 수 있습니다

f = @(x)typecast(uint32(mod(int64(x),int64(2)^32)),'int32'); 

또는

function y = f(x) 
    y = typecast(uint32(mod(int64(x),int64(2)^32)),'int32'); 
end 

그래서 f([-1, 2532063508]) 반환 [-1, -1762903788].

+0

모르겠다면, x = [- 1, 2532063508]을 입력하고'[-1, -1762903788]'을 반환하는 y = f (x) 형태로 써주시겠습니까? –

+0

@ZhaniBaramidze 답변이 업데이트되었습니다. – rahnema1