es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir de decimal a complemento a 2 firmado y viceversa en javascript puro.

Eres un traductor de documentos de TI en español. Traduce lo siguiente al español. No traduzcas el código ni la salida en markdown.

Estoy atrapado con el complemento a 2 y cómo funciona. Estoy haciendo un conversor de números igual que https://www.rapidtables.com/convert/number/hex-to-decimal.html, he agregado todas las conversiones excepto el complemento a 2. Además, esta conversión está en todas las conversiones de hexadecimal a decimal, de decimal a binario y de decimal a hexadecimal. No entiendo muy bien estas conversiones, por lo que se agradece una explicación.

A continuación se encuentran las funciones que uso en otro archivo JS, pero este código no incluye el complemento a 2. No tengo idea de cómo calcularlo. Quiero la misma funcionalidad que la que aparece en https://www.rapidtables.com/convert/number/hex-to-decimal.html

// =============== Convertidor de números ===============
// programa para convertir cualquier tipo (decimal, binario o hexadecimal) a cualquier tipo (binario, decimal o hexadecimal)

export function convertToDecimal(binary) {
    // úsalo así
    // devolverá el valor decimal del número binario
    // convertToDecimal('101') ==> 5

    return parseInt(binary, 2);
}

export function convertToBinary(decimal) {
    /* úsalo así
    devolverá el valor binario del número decimal
    convertToBinary(5) ==> '101'
    */
    return decimal.toString(2);
}

export function binary2Decimal(binary) {
    /* úsalo así
    devolverá el valor decimal del número binario
    binary2Decimal('101') ==> 5
    */
    return parseInt(binary, 2);
}

export function binary2Octal(binary) {
    /* úsalo así
    devolverá el valor octal del número binario
    binary2Octal('101') ==> '5'
    */
    return parseInt(binary, 2).toString(8);
}

export function binary2hex(binary) {
    /* úsalo así
    devolverá el valor hexadecimal del número binario
    binary2hex('101') ==> '5'
    */
    return parseInt(binary, 2).toString(16);
}

export function fromBinary2Hex(binary) {
    let resp = new Object();
    resp.hex = binary2hex(binary);
    resp.decimal = binary2Decimal(binary);
    return resp;
}

export function hex2Binary(hex) {
    return parseInt(hex, 16).toString(2);
}

export function hex2Decimal(hex) {
    return parseInt(hex, 16);
}

export function fromHex(hex) {
    let resp = new Object();
    resp.binary = hex2Binary(hex);
    resp.decimal = hex2Decimal(hex);
    return resp;
}

export function decimal2Binary(decimal) {
    return parseInt(decimal).toString(2);
}

export function decimal2hex(decimal) {
    return parseInt(decimal).toString(16);
}

export function fromDecimal(decimal) {
    let resp = new Object();
    resp.binary = decimal2Binary(decimal);
    resp.hex = decimal2hex(decimal);
    return resp;
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La representación en complemento a dos es una manera de representar números negativos en binario. Funciona invirtiendo los bits de un número binario y luego sumando 1. Por ejemplo, el complemento a dos de 101 es 010.

    Para calcular el complemento a dos de un número binario, puedes seguir los siguientes pasos:

    1. Invertir los bits del número binario (es decir, cambiar todas las 0 a 1 y todas las 1 a 0).
    2. Sumar 1 al resultado.

    Por ejemplo, para calcular el complemento a dos de 101, primero invertirías los bits para obtener 010, y luego le sumarías 1 para obtener 011.

Comments are closed.