二进制安全需要记住的取值范围 int8,unsigned int8,float32,Int32
int
int8取值范圍是-128 - 127
unsigned int8 0-255
Int16 意思是16位整數(shù)(16bit integer),相當(dāng)于short 占2個字節(jié) -32768 ~ 32767
Int32 意思是32位整數(shù)(32bit integer), 相當(dāng)于 int 占4個字節(jié) -2147483648 ~ 2147483647
Int64 意思是64位整數(shù)(64bit interger), 相當(dāng)于 long long 占8個字節(jié) -9223372036854775808 ~ 9223372036854775807
float
一個float單精度浮點數(shù)一般是4bytes(32bit)來表示,由三部分組成:符號位、指數(shù)部分(表示2的多少次方)和尾數(shù)部分(小數(shù)點前面是0,尾數(shù)部分只表示小數(shù)點后的數(shù)字)
雙精度64位,單精度32位,半精度自然是16位
float32: 單精度浮點數(shù)float的這三部分所占的位寬分別為:1,8,23
float16: 半精度浮點數(shù)half的這三部分所占的位寬分別為:1,5,10
半精度是英偉達在2002年搞出來的,雙精度和單精度是為了計算,而半精度更多是為了降低數(shù)據(jù)傳輸和存儲成本。
很多場景對于精度要求也沒那么高,例如分布式深度學(xué)習(xí)里面,如果用半精度的話,比起單精度來可以節(jié)省一半傳輸成本。考慮到深度學(xué)習(xí)的模型可能會有幾億個參數(shù),使用半精度傳輸還是非常有價值的。
Google的TensorFlow就是使用了16位的浮點數(shù),不過他們用的不是英偉達提出的那個標(biāo)準(zhǔn),而是直接把32位的浮點數(shù)小數(shù)部分截了。據(jù)說是為了less computation expensive。。。
其他
Byte 相當(dāng)于byte(unsigned char) 0 ~ 255
WORD 等于 unsigned short 0 ~ 65535
總結(jié)
以上是生活随笔為你收集整理的二进制安全需要记住的取值范围 int8,unsigned int8,float32,Int32的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可以直接反编译Mips架构的IDA版本(
- 下一篇: pwntools语句的简单使用,包含例子