我正在编写一个需要为签名和无符号数字工作的程序。你接受一个32位输入,前24位是一个整数,最后8位是一个分数。取决于您向上或向下舍入的分数。很简单,但是如果输入是签名还是未签名,你会如何编写一个可以工作的程序?您是否只根据数字是否未签名而执行两个单独的代码块?
答案 0 :(得分:0)
如果数据和来自该信息的数据是否已签名,您的程序需要知道来源。否则,您的程序如何知道位向量是否(未)签名?标牌是人类用于构建数据的惯例。您实现的硬件只能看到一个位向量。
答案 1 :(得分:0)
具有8个分数位的32位无符号数可以表示0到((2 ^ 32)-1)/ 256范围内的数字。
带有8个小数位的32位有符号数可以表示范围内的数字 - (2 ^ 31)/ 256到((2 ^ 31)-1)/ 256。
那么,如何将32位输入(有符号或无符号)转换为33位有符号,这将能够表示范围内的数字 - (2 ^ 32)/ 256到((2 ^ 32) - 1)/ 256,它将涵盖您的整个输入范围。
(你没有给出任何代码。除了你的32位输入之外,还必须有一些其他输入来指示这32位代表无符号或有符号数。你需要测试那个输入并根据其状态进行适当的转换。)