题解 | #乘法与位运算#
乘法与位运算
https://www.nowcoder.com/practice/e41980b698624eb2b20c0d6e2bee7f45
`timescale 1ns/1ns
module dajiang13(
input [7:0] A,
output [15:0] B
);
//*************code***********//
// 关键: 使用移位来进行乘法操作
// 即:A[7:0]*8'b11111011 == A[7:0]*(9'b100000000-8'b00000100-8'b00000001)
// 而A[7:0]*8'b00000100 == {8'b0, A[7:0]} << 2 == {6'b0, A[7:0], 2'b0};
// 而A[7:0]*9'b100000000 == {8'b0, A[7:0]} << 8 == {A[7:0], 8'b0};
// 而A[7:0]*8'b00000001 == {8'b0, A[7:0]} << 0 == {8'b0, A[7:0]};
wire c;
assign {c, B[10:0]} = {A[2:0], 8'b0} - {1'b0, A, 2'b0} - {3'b0, A};
assign B[15:11] = A[7:3]-c;
//*************code***********//
endmodule
查看16道真题和解析