Bit Operations

本文展示了Java中位运算符<<, >>和>>>, 通过将整数进行左移、右移和循环右移操作,展示了它们在不同整数上的行为,包括输出移位后的值。

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

    public static void main(String[] arg) {
        System.out.println();
        System.out.println("<<:");
        for(int i=1; i<=18; i++) {
            System.out.println(i+":"+(1<<i));
        } 
        System.out.println();
        System.out.println(">>");
        for(int i=1; i<=20; i++) {
            System.out.println(i+":"+(262144>>i));
        }
       
        System.out.println();
        System.out.println(">>>");
        for(int i=1; i<=20; i++) {
            System.out.println(i+":"+(262144>>>i));
        }
    }

 

 


<<:
1:2
2:4
3:8
4:16
5:32
6:64
7:128
8:256
9:512
10:1024
11:2048
12:4096
13:8192
14:16384
15:32768
16:65536
17:131072
18:262144

>>
1:131072
2:65536
3:32768
4:16384
5:8192
6:4096
7:2048
8:1024
9:512
10:256
11:128
12:64
13:32
14:16
15:8
16:4
17:2
18:1
19:0
20:0

>>>
1:131072
2:65536
3:32768
4:16384
5:8192
6:4096
7:2048
8:1024
9:512
10:256
11:128
12:64
13:32
14:16
15:8
16:4
17:2
18:1
19:0
20:0

% 智能抢答器Simulink模型生成代码 clear all; close all; clc; % 创建新的Simulink模型 modelName = 'SmartAnswererCircuit'; if exist(modelName, 'model') close_system(modelName, 0); end new_system(modelName); open_system(modelName); set_param(modelName, 'ModelReferencing', 'on'); % --------------------- 添加模块 --------------------- % 1. 抢答按键输入(4路脉冲信号) add_block('simulink/Sources/Pulse Generator', [modelName '/Key1'], ... 'Amplitude', 1, 'Period', 20, 'PulseWidth', 1, 'PhaseDelay', 5); % 按键1(延迟5s模拟按下) add_block('simulink/Sources/Pulse Generator', [modelName '/Key2'], ... 'Amplitude', 1, 'Period', 20, 'PulseWidth', 1, 'PhaseDelay', 10); % 按键2 add_block('simulink/Sources/Pulse Generator', [modelName '/Key3'], ... 'Amplitude', 1, 'Period', 20, 'PulseWidth', 1, 'PhaseDelay', 15); % 按键3 add_block('simulink/Sources/Pulse Generator', [modelName '/Key4'], ... 'Amplitude', 1, 'Period', 20, 'PulseWidth', 1, 'PhaseDelay', 20); % 按键4 % 2. 优先编码逻辑(模拟74LS148) add_block('simulink/Logic and Bit Operations/Relay', [modelName '/PriorityRelay1'], ... 'InputThreshold', 0.5, 'OutputWhenEngaged', 1, 'OutputWhenDisengaged', 0); add_block('simulink/Logic and Bit Operations/Relay', [modelName '/PriorityRelay2'], ... 'InputThreshold', 0.5, 'OutputWhenEngaged', 1, 'OutputWhenDisengaged', 0); add_block('simulink/Logic and Bit Operations/Relay', [modelName '/PriorityRelay3'], ... 'InputThreshold', 0.5, 'OutputWhenEngaged', 1, 'OutputWhenDisengaged', 0); add_block('simulink/Logic and Bit Operations/Relay', [modelName '/PriorityRelay4'], ... 'InputThreshold', 0.5, 'OutputWhenEngaged', 1, 'OutputWhenDisengaged', 0); % 3. 锁存器(模拟74LS279) add_block('simulink/Memory/Unit Delay', [modelName '/Latch1'], ... 'InitialCondition', 0, 'Reset', 'on'); add_block('simulink/Memory/Unit Delay', [modelName '/Latch2'], ... 'InitialCondition', 0, 'Reset', 'on'); add_block('simulink/Memory/Unit Delay', [modelName '/Latch3'], ... 'InitialCondition', 0, 'Reset', 'on'); add_block('simulink/Memory/Unit Delay', [modelName '/Latch4'], ... 'InitialCondition', 0, 'Reset', 'on'); % 4. 声光提示模块 add_block('simulink/Sinks/LED Display', [modelName '/LED1'], ... 'LEDColor', 'red', 'Position', [280, 120, 320, 160]); add_block('simulink/Sinks/LED Display', [modelName '/LED2'], ... 'LEDColor', 'red', 'Position', [280, 80, 320, 120]); add_block('simulink/Sinks/LED Display', [modelName '/LED3'], ... 'LEDColor', 'red', 'Position', [280, 40, 320, 80]); add_block('simulink/Sinks/LED Display', [modelName '/LED4'], ... 'LEDColor', 'red', 'Position', [280, 0, 320, 40]); add_block('simulink/Sinks/Buzzer', [modelName '/Buzzer'], ... 'Position', [400, 80, 440, 120]); % 5. 计时模块 add_block('simulink/Sources/Pulse Generator', [modelName '/TimerPulse'], ... 'Amplitude', 1, 'Period', 1, 'PulseWidth', 0.5); % 1Hz计时脉冲 add_block('simulink/Discrete/Counter', [modelName '/MinuteCounter'], ... 'StartValue', 0, 'ResetValue', 0, 'UpperLimit', 60); % 60秒计数 add_block('simulink/Logic and Bit Operations/Compare To Constant', [modelName '/TimerReset'], ... 'ConstantValue', 60, 'Operator', '==', 'OutputWhenTrue', 1, 'OutputWhenFalse', 0); % 6. 逻辑控制模块(模拟优先编码逻辑) add_block('simulink/Logic and Bit Operations/Logical Operator', [modelName '/AND1'], ... 'Operator', 'AND', 'Inputs', '2'); add_block('simulink/Logic and Bit Operations/Logical Operator', [modelName '/AND2'], ... 'Operator', 'AND', 'Inputs', '2'); add_block('simulink/Logic and Bit Operations/Logical Operator', [modelName '/NOT1'], ... 'Operator', 'NOT'); % --------------------- 连接模块 --------------------- % 1. 优先编码逻辑连接(简化逻辑:Key1优先级最高,Key4最低) add_line(modelName, 'Key1/1', 'PriorityRelay1/1'); add_line(modelName, 'Key2/1', 'AND1/1'); add_line(modelName, 'NOT1/1', 'AND1/2'); add_line(modelName, 'AND1/1', 'PriorityRelay2/1'); add_line(modelName, 'Key3/1', 'AND2/1'); add_line(modelName, 'AND1/1', 'AND2/2'); add_line(modelName, 'AND2/1', 'PriorityRelay3/1'); add_line(modelName, 'Key4/1', 'PriorityRelay4/1'); % 2. 锁存器连接 add_line(modelName, 'PriorityRelay1/1', 'Latch1/1'); add_line(modelName, 'PriorityRelay2/1', 'Latch2/1'); add_line(modelName, 'PriorityRelay3/1', 'Latch3/1'); add_line(modelName, 'PriorityRelay4/1', 'Latch4/1'); % 3. 声光提示连接 add_line(modelName, 'Latch1/1', 'LED1/1'); add_line(modelName, 'Latch2/1', 'LED2/1'); add_line(modelName, 'Latch3/1', 'LED3/1'); add_line(modelName, 'Latch4/1', 'LED4/1'); add_line(modelName, 'Latch1/1', 'Buzzer/1'); add_line(modelName, 'Latch2/1', 'Buzzer/1', 'autorouting', 'on'); add_line(modelName, 'Latch3/1', 'Buzzer/1', 'autorouting', 'on'); add_line(modelName, 'Latch4/1', 'Buzzer/1', 'autorouting', 'on'); % 4. 计时模块连接 add_line(modelName, 'TimerPulse/1', 'MinuteCounter/1'); add_line(modelName, 'MinuteCounter/1', 'TimerReset/1'); add_line(modelName, 'TimerReset/1', 'NOT1/1'); add_line(modelName, 'TimerReset/1', 'Latch1/Reset'); add_line(modelName, 'TimerReset/1', 'Latch2/Reset', 'autorouting', 'on'); add_line(modelName, 'TimerReset/1', 'Latch3/Reset', 'autorouting', 'on'); add_line(modelName, 'TimerReset/1', 'Latch4/Reset', 'autorouting', 'on'); % --------------------- 模型配置 --------------------- % 设置仿真参数 set_param(modelName, 'StopTime', '60'); set_param(modelName, 'Solver', 'discrete'); % 保存模型 save_system(modelName); % 显示模型 open_system(modelName); % 运行仿真 sim(modelName); % 显示提示信息 disp('智能抢答器Simulink模型已生成,可在Simulink中查看逻辑连接!'); disp('说明:此模型为逻辑仿真,非硬件电路图,实际电路需用Multisim/Altium Designer绘制。'); 能否正确运行
06-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值