Verilog에서 부호있는 부동 소수점을 부호있는 24 비트 이진 값으로 변환하려고합니다. 예 :Verilog 부동 소수점 - 이진 변환
-0.0065 would become: 24'b100000000110101001111110
0.0901 would become: 24'b000001011100010000110010
이 맞습니까?
잘라낼 수있다 (수학 사용루비 구문 및 붙여 는
Verilog에서 부호있는 부동 소수점을 부호있는 24 비트 이진 값으로 변환하려고합니다. 예 :Verilog 부동 소수점 - 이진 변환
-0.0065 would become: 24'b100000000110101001111110
0.0901 would become: 24'b000001011100010000110010
이 맞습니까?
잘라낼 수있다 (수학 사용루비 구문 및 붙여 는
소수 소수 0.0901
촬영 2 정수 비트 및 22 분수 비트 (24 비트 전체)과 고정 소수점 값으로 변환 감사 IRB (대화 형 루비) 명령 줄 도구)로 :
i = (0.0901 * 2**20) # 377906.7904
# truncat to integer value
i = i.to_i # 377906
# Convert to string using binary (base 2)
i.to_s(2) # "1011100010000110010"
는 앞에 0을 추가하려면 (24 비트 길이) 오른쪽 정당화 0의
i.to_s(2).rjust(24, '0') # "000001011100010000110010"
# Convert to Hex (base 16)
i.to_s(16) # "5c432"
와 패드
(0.0065 * 2**22).to_i.to_s(2).rjust(24, '0')
=> "000000000110101001111110"
의 보수가
"000000000110101001111110"
"111111111001010110000001" # Ones complement (bit invert)
"111111111001010110000001" + 1
"111111111001010110000010" #Twos complement
당신은 MSB와 단지 양수이다 24'b100000000110101001111110
했다 보완 : 617,451,515,
서명 숫자는 가장 쉬운 방법은 다음의 보수를 수행 양의 값을 계산하는 것입니다, 좀 더 문제가있다 1
으로 설정하면 서명 된 숫자가 정상적으로 작동하지 않습니다. 사용 된 형식은 Sign Magnitude이지만, 이전 질문에 따라 승수에 피드를 제공 할 수는 없습니다.
NB : 또한 고정 소수점으로 변환하는 양자화 효과를 건너 뛰었습니다. 분수 비트로 스케일 된 계수는 377906.7904입니다. 하지만 정수 부분을 취하여 0.7904
이라는 오류를 제공하므로 필터 성능에 영향을 미칠 수 있습니다.
부동 소수점 형식이란 무엇입니까? –