对于基于FPGA的LSTM加速器设计(MNIST数据集为例)的例程部分有些许疑问,想要请教

对PE部分的代码感到困惑,不清楚实际目的,因为是第一次研究相关代码,想请您帮忙解答一下
Gate—MVMs—PE—PE_c2t中大概40行左右出现了如下代码
always@(posedge clk or negedge rst)
if(!rst)
begin
pe_out = 0;
end
else if(!ena)
pe_out <= pe_out;
else if(in[15])
begin
pe_out[14:0] <= ~(in[14:0] + 15'b1111_1111_1111_111);//?想请问为什么要在in的最高位为1时进行这样的变换?
pe_out[15] <= in[15];
end

这段代码应该是判断一个负数,并把这个是负数的补码转换成源码。

啊这。。。其实你直接留评论区问我,我看见了也会回答,楼上说的没错,最高位是符号位,1代表负数,0正数,我是先将补码转换为原码,再进行移位,然后再将结果转换回补码