ALU底层方法及计算机整数加减乘除模拟

本文介绍了ALU(算术逻辑单元)的基本功能,包括算术运算、逻辑运算、求补器、移位器和状态标志。通过提供Java代码实现,详细阐述了如何进行二进制加法、减法、乘法和除法操作,以及如何处理二进制补码。文章以实际例子展示了ALU在计算机整数运算中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ALU是计算机CPU的核心,即 算术逻辑单元(arithmetic and logic unit)
ALU有几大功能,是计算机计算最基础的功能:
1.算术运算:包含加法、减法等
2.逻辑运算:主要是布尔运算,逻辑和、或、非、异或等
3.求补器:计算机中,二进制补码极其重要,可以求一个二进制的补码(源码取反得反码,反码加一得补码)
4.移位器:主要有 算术右移、逻辑右移、左移
5.状态标志:一个记录状态的标志。
/**
   以下加法减法等都默认是相同长度的,如果长度不同会报错,当然,我只是懒得处理。 20  */

public class ALU {

    /**
     * 返回一个整数的定长二进制字符串(补码)
     *
     * @param len 指定长度
     */
    public String Int2Binary(int n, int len) {
//        return Integer.toBinaryString(n);//注意,这个方法返回的是无符号的二进制,而且长度随参数而变的,故不可行,但是负数是可行的,负数返回32位
        String s = "";
        for (int i = len - 1; i >= 0; i--) {
            s += ((n >> i) & 1) == 1 ? "1" : "0";
        }
        return s;
    }

    /**
     * 默认长度,即可以满足的最小长度
     */
    public String Int2Binary(int n) {
        if (n == 0) return "0";
        if (n > 0) {
            return "0" + Integer.toBinaryString(n);
        } else {
            return getNegative("0" + Integer.toBinaryString(-n));
        }
    }

    public int binary2Int(String binary) {
        if(binary.charAt(0)=='0')
                return Integer.valueOf(binary,2);
            else return -Integer.valueOf(getNegative(binary));
    }

    /**
     * 加法器:计算两个二进制的和
     *
     * @param binary1
     * @param binary2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值