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