区块链研习社区块链大学区块链

《锋哥论道区块链》之三区块链基础--二进制存储方式

2019-04-12  本文已影响1人  7dfc697cf7a9

二进制,有符号数,首位为1的是负数,首位为0的是正数。(规定)
无符号数没有正负之分,所以也没有首位的限制。(规定)
判断一个二进制是正数还是负数,要先看其在计算机中是以有符号进行存储还是无符号进行存储。
》如果是无符号存储,则为原码存储,其为一个正数。
》若是有符号存储,则为补码存储。看其最高位,最高位为0,为正数,反之,为负数。
1.无符号存储
无符号数的原码、反码、补码都一样,皆为该数的二进制表示法
针对这种情形,均为原码存储,代表的是一个正数。比如针对一个字节的二进制最小值:00000000;最大值:11111111.范围0~255.
针对无符号二进制01100100对应的十进制12^6+125+1*22=100
2.有符号存储
我们以一个字节的二进制为例,其首位代指符号,0表示正数,1代指负数,后面七位指代数值。最小1000 0000,最大01111111,范围-128(1000 0000)~127(01111111).
针对这种情形,均为补码存储。
2.1正数
正数的原码为该数的二进制表示法。 正数的反码与原码一样。 正数的补码与原码一样。
例如:1==>0000 0001(原码)==>0000 0001(反码)==>0000 0001(补码)
(首位为符号位,首位0表示正数,所以原码、反码和补码的首位都是0)
2.2负数
(1)负数原码
负数的原码为该数对应的无符号数的二进制,将首位置1。
例如:-1==>1(无符号数)==>0000 0001(无符号数的二进制)==>1000 0001(原码)。
(首位为符号位,首位1表示负数,后七位表示数值)
(2)负数反码
负数的反码为该数原码的符号位不变,其它位取反。
例如:-1==>1000 0001(原码)==>1111 1110(反码,符号位不变,其它位取反)。
(3)负数补码
》负数的补码为该数对应的无符号数的二进制取反加一。
例如:
-128==>128(无符号数)==>1000 0000(-128的无符号数的二进制)==>0111 1111(取反)==>1000 0000(补码,加1)(负数的首位为1)
-1==>1(无符号数)==>0000 0001(-1对应无符号数的二进制)==>1111 1110(取反)==>1111 1111(补码,加1)(负数的首位为1)

上一篇下一篇

猜你喜欢

热点阅读