文章目录
- 前言
- 一、进制转换
- 1、十进制转二进制
- 2、二进制转十进制
- 3、二进制乘除法
- 二、原码、反码、补码
- 1、由补码计算十进制数
- 2、计算某个负数的补码
前言
2023.8.13 天气晴
一、进制转换
1、十进制转二进制
整数:除以2,余数倒着写
小数:乘以2,正着写
例题1
:
(2.3175)d = ( )b = ( )b*2^2
10.0101 1001.01
例题2
:
十进制数13.613转化为二进制数,要求误差小于1%
2^-m <= 0.01
-m lg2 <= -2
m >= 2/lg2 = 6.64 所以,m = 7
0.613*2=1.226
最后去整数部分的时候,如果小数部分大于0.5.那么应该取1
2、二进制转十进制
乘以2的次方
3、二进制乘除法
乘法:被乘数左移,后相加
除法:除数右移,被除数/余数去减去除数
二、原码、反码、补码
8位二进制数的范围:
有符号数 | 无符号数 |
---|---|
-128~127 | 0~255 |
原码 | 反码 | 补码 |
---|---|---|
-127~127 | -127~127 | -128~127 |
1111_1111 ~ 0111_111 | 1000_0000 ~ 0111_111 | 1000_0000 ~ 0111_1111 |
-128只有补码
补码:位数一定,绝对值最大的补码是符号位是1,数值位全为0,如-128的补码1000_0000
原码 | 反码 | 补码 | |
---|---|---|---|
+0 | 0000_0000 | 0000_0000 | 0000_0000 |
-0 | 1000_0000 | 1111_1111 | 0000_0000 |
127 | 0111_1111 | 0111_1111 | 0111_1111 |
-127 | 1111_1111 | 1000_0000 | 1000_0001 |
-128 | 1000_0000 |
1、由补码计算十进制数
方法1:符号位不变,其他位取反,再加一
方法2:补码的首位代表权,且是负数的权
例题3
:
1110_0000:-128+64+32=-32
0110_0000:64+32=96
2、计算某个负数的补码
[-X]补码 = 2^位数-X
4bit的-3的补码 = 16-3 = 13 = 4'b1101
8bit的-128的补码 = 2^8 - 128 = 128 = 8'b1000_0000