verilog学习笔记5——进制和码制、原码/反码/补码

文章目录

  • 前言
  • 一、进制转换
    • 1、十进制转二进制
    • 2、二进制转十进制
    • 3、二进制乘除法
  • 二、原码、反码、补码
    • 1、由补码计算十进制数
    • 2、计算某个负数的补码


前言

2023.8.13 天气晴


一、进制转换

1、十进制转二进制

整数:除以2,余数倒着写
小数:乘以2,正着写
verilog学习笔记5——进制和码制、原码/反码/补码_第1张图片

例题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、二进制乘除法

乘法:被乘数左移,后相加
除法:除数右移,被除数/余数去减去除数
verilog学习笔记5——进制和码制、原码/反码/补码_第2张图片

二、原码、反码、补码

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

verilog学习笔记5——进制和码制、原码/反码/补码_第3张图片

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

你可能感兴趣的:(Verilog学习笔记,学习,笔记,verilog)