归一化两个补数

问题描述 投票:2回答:2

我正在使用某些Tensilica处理器,但我不了解规范化过程。

NSA-标准化班次金额

用法:NSA at, as

NSA计算左移量,该量将对地址寄存器as的二进制补码内容进行归一化,并将该量(在0到31之间)写入地址寄存器at

[如果as包含0或-1,则NSA返回31。使用SSL和SLL将NSA结果左移的as产生最小值,除非as包含0,否则第31位和第30位不同。

enter image description here

因此,基本上NSA会计算移位量值(0 ... 31)并写入at寄存器。

问题是如何计算,这意味着从as标准化两个补码值是什么意思?

这不是浮点指令。在as中可以是32位(31 +符号)的有符号值]

感谢您的澄清,

编辑:应该是这样(感谢彼得·科德斯)

0x00000004 4                         _______  number
                                    |       
0    0    0    0    0    0    0    1| 
0000 0000 0000 0000 0000 0000 0000 0100
<--------------------------------> |
              NSA = 28 bits        |________  sign 


0x00000003 3                          ______  number
                                     |      
0    0    0    0    0    0    0    1 | 
0000 0000 0000 0000 0000 0000 0000 0011
<---------------------------------->|
              NSA = 29 bits         |_______  sign 


0x00000002 2                          ______  number
                                     |      
0    0    0    0    0    0    0    1 | 
0000 0000 0000 0000 0000 0000 0000 0010
<---------------------------------->|
              NSA = 29 bits         |_______  sign 


0x00000001 1                           _____  number
                                      |     
0    0    0    0    0    0    0    1  | 
0000 0000 0000 0000 0000 0000 0000 0001
<----------------------------------->|
              NSA = 30 bits          |______  sign 



0xFFFFFFFF 0    NSA = 31
0xFFFFFFFF -1   NSA = 31


0xFFFFFFFE -2                          _____  number
                                      |     
F    F    F    F    F    F    F    E  | 
1111 1111 1111 1111 1111 1111 1111 1110
<----------------------------------->|
              NSA = 30 bits          |______  sign 



0xFFFFFFFD -3                         ______  number    
                                     |      
F    F    F    F    F    F    F    D | 
1111 1111 1111 1111 1111 1111 1111 1101
<---------------------------------->|
              NSA = 29 bits         |_______  sign  



0xFFFFFFFC -4                         ______  number    
                                     |      
F    F    F    F    F    F    F    C | 
1111 1111 1111 1111 1111 1111 1111 1100
<---------------------------------->|
              NSA = 29 bits         |_______  sign      


0xFFFFFFFB -5                        _______  number    
                                    |       
F    F    F    F    F    F    F    B| 
1111 1111 1111 1111 1111 1111 1111 1011
<--------------------------------> |
              NSA = 28 bits        |________  sign                    
assembly binary normalization twos-complement fixed-point
2个回答
3
投票

类似于计数前导零的声音,除了它计数有多少个前导位都具有相同的值,并产生结果-1。

或者换一种说法,它计算符号位的多少位[[以下与符号位的值相同。(因此不属于符号的significant位的一部分伪代码将此位扫描表示为二进制搜索,但内部实现可以是任何东西。


左移那个量将使值“归一化”以使用-2^31 .. 2^31-1的整个范围,而不会溢出。因此,x << NSA(x)的结果将处于-2^31 .. -(2^30+1)2^30 .. 2^31-1这两个范围之一。 (如文档所述,向左移位该值会导致符号位与下一位不同的值。除了0-1的输入是特殊情况。)

大概正常情况是对多个输入值使用相同的归一化偏移值?


4
投票
严格来说,虽然这不是浮点指令,但其主要用途可能是在[[implementing软件浮点运算中。

浮点数通常始终具有其尾数集的最高有效位,实际上,该位通常没有显式存储。给定一些数学运算的原始结果,NSA会为您提供移动尾数以再次将其恢复为正常形式的金额。 (您还可以将指数调整相同的数量,以便浮点数仍代表正确的值。)

© www.soinside.com 2019 - 2024. All rights reserved.