关于十进制数 转换为byte数据类型的问题


十进制 转为byte类型:
方式一:
例一: 1234 → -46‬

① 1234转换为二进制为: 100 1101 0010(正数,原反补相同)

② 二进制转为 byte数据类型 : 只保留后八位
    1101 0010(补码,首位 为1 代表负数)

③ 转反码(负数补码转反码需要-1) : 1101 0001

④ 转为原码(负数转为原码 除符号位 其余取反):
    1010 1110(其中最高位1 为 - 010 1110转十进制为46)

⑤ 得结果  -46

⑥ 验证:

 

 

 

 

 


 

 

 


例二: -1234 → 46

① -1234转换为二进制为: 1111 1011 0010 1110(此处为补码 1111 1111 1111 1111 1111 1011 0010 1110‬ 偷个懒)

② 二进制转为 byte数据类型 : 只保留后八位
    0010 1110(首位 为0 代表正数  正数,原反补相同)

③ 0010 1110(转十进制为46)

④ 得结果  46


方式二:
权值法:
直接对二进制数 从末尾开始每一个数乘以2的n次幂,n从0开始,
(例:0010 1001权值法<1*2^0+0*2^1+0*2^2+1*2^3+0*2^4+1*2^5+0*2^6+0*2^7>所得的结果为41 )

例一:2345 → 41
1001 0010 1001
① 2345转换为二进制为: 1001 0010 1001(正数,原反补相同)

② 二进制转为 byte数据类型 : 只保留后八位
    0010 1001(补码,首位 为0 代表负正数 正数,原反补相同)

③ 为正数时,直接使用权值法 
1*2^0+0*2^1+0*2^2+1*2^3+0*2^4+1*2^5+0*2^6+0*2^7

④ 得结果  41

例二: -2345→  -41

① -2345转换为二进制为: 1111 0110 1101 0111(此处为补码1111 1111 1111 1111 1111 0110 1101 0111 偷个懒)

② 二进制转为 byte数据类型 : 只保留后八位
    1101 0111(首位 为1代表负数)

③ 为负数时,直接使用权值法 其中最高位*-1
1*2^0+1*2^1+1*2^2+0*2^3+1*2^4+0*2^5+1*2^6+1*2^7*-1

④ 得结果  -41

⑤ 验证

 

 

 

 

 

 

 注:计算器解释相关解释

        HEX :十六进制
        DEC:十进制
        OCT:八进制
        BIN:二进制,注意这里的二进制为二进制补码形式

        输入一个数,进制转换会自动进行

        QWORD:四字,64位 DWORD:双字,32位 WORD:字,16位 BYTE:字节,8位

 

以上仅个人拙见,有其他建议欢迎指出  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM