Java에서 가지고있는 비트 값 또는 byte 값을 수행하려고합니다. 예를 들어 , 나는 실행하고이에 대한 byte b = (byte)0b11111111;
int result = 0 | b;
내 예상 된 결과가 0b00000000 00000000 00000000 11111111, 또는 255 될 것이다. 그러나 -1 또는 0b11111111 11111
부호 확장이 MIPS addi 명령의 즉시 값으로 발생한다는 것을 알게되었습니다. (http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/addi.html) 그러나 서명 할 때 언제 마이너스 값으로 연장할지는 확실하지 않습니다. 나는 main:
addi $t0, $0, 0x8000
jr $31
폭 ++ C의 코드 :가 #include <iostream>
#include<limits.h>
using namespace std;
void sign_extending(int x,unsigned b)
{
int r; // resulting sign-extended number
int const m = CHAR_BIT * size
(편집 됨) 나는 Verilog 산술 프로젝트에서 일하고 있는데, 나는 이것이 문제라고 가정하고 부호 연장 부분에 걸렸다. 나는 4 비트 입력 A, B를 가지고 있고 8 비트 출력을 가져야한다. 일부 프로세스 (합계, 하위 ...) 8 비트 출력을 만들기 위해 부호 확장을 사용해야합니다. 산수의 경우,이 코드를 가지고 있습니다. 이것은 코드의 절반입니다.