记录.原码、反码、补码是如何简化处理四则运算以及计算机的数值存储

一、原码反码补码

1、原码:最高位是符号位,正数符号位为0,负数符号位为1。其余是数值。符号位加数值组成原码。

2、反码:正数反码是原码,负数反码是除了符号位外其他位取反。

3、补码:正数补码是原码,负数补码是其反码加1。

二、问题

1、在学习verilog涉及运算模块难免用到加法器、乘法器、除法器,那么他们究竟要如何做才能支持正负数运算而不引入过多的处理呢?

2、c/c++是如何处理正负数数值的,以及无符号、有符号的强制类型转换是怎么赋值的?

三、记录

1、c/c++的所有数值都是以补码的方式存储在内存里。

2、c/c++的无符号、有符号相互赋值只是在做内存copy,长有符号类型赋值到短无符号类型会截断高位、短有符号类型赋值到长无符号类型会直接赋值到低位,哪怕是符号位。

3、c/c++的有符号的长短类型间赋值会关注符号位

四、verilog的符号运算

1、verilog依旧是补码的计算,补码天然具有把” 减法变加法的功能 “。这样只需要加法器就能模拟成减法器,而乘法器跟除法器在涉及有符号时就不需要考虑符号位的问题,直接当无符号计算。

2、通过上诉计算出来的依旧是补码,想要拿到原码需要经过逆运算电路做转换,不过大多的情况不会需要拿到原码,因为数值以补码保存。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值