C语言二进制、八进制、十进制、十六进制转换,原码、反码、补码、移码

 进制转换

a.常用进制

注:当没有下标或后缀时默认为十进制数

  1. 按权展开求和:n进制———> 十进制  每一位八进制数与三位二进制数对应 

     例:192=1*10^2+9*10^1+2*10^0                  

  1. 除n取余法:十进制———> n进制   每一位十六进制数与四位二进制数对应
  2. 进制加减法:加法:逢n进制进一       减法:借一当n

b.非十进制数转为十进制数

(1)二进制转换为十进制

(101.1101)2= 1x2^2+ 0x2^1+ 1x2^0+ 1x2^-1+ 1x2^-2+ 0x2^-3+ 1x2^-4= (5.8125)10

  1. 八进制转换为十进制

(105.236)8= 1x8^2+ 0x8^1+ 5x8^0+ 2x8^-1+ 3x8^-2+ 6x8^-3= (69.30859375)10

  1. 十六进制转换为十进制

(A27.5C)16= 10x16^2+ 2x16^1+ 7x16^0+ 5x16^-1+ 12x16^-2= (2599.359375)10

c.十进制数转换为非十进制数

整数部分:除N取余,商为0时,将余数倒序输出

小数部分:乘N取整数,直至积为0(或满足精度),整数部分正序输出

  1. 十进制转换为二进制

  1. 十进制转换为八进制

  1. 十进制转换为十六进制

d.二进制与八进制、十六进制的相互转换

二进制转为八进制(三位一组)

将二进制数从小数点开始分别向左(整数部分)向右(小数部分)3位二进制位组成一组,将每一组内的3位二进制数转换成八进制数码中的一个数字,按顺序连接起来即得八进制表示。不足3位时,对原数值用0来补足3位。

例如:(001 011 111 . 001)2= (137.1)8

二进制转为十六进制(四位一组)

将二进制数从小数点开始分别向左(整数部分)向右(小数部分)4位二进制位组成一组,将每一组内的4位二进制数转换成十六进制数码中的一个数字,按顺序连接起来即得十六进制表示。如果总的位数不是4的倍数,那么最左面的一组可以少于4位,前面用0来补足4位。

例如:(1111 1111 0100 1011)2= (FF4B)16

 数据表示

1.原码,反码,补码,移码

(1)原码:总共有n位。最高位是符号位,0表示正号,1表示负号。其余n - 1为位表示数值的绝对值。

(2)反码:正数的反码与原码相同,负数的反码则是其绝对值按位求反。

(3)补码:正数的补码与其原码和反码相同,负数的补码则是等于其反码的末位加1。补码可以简化计算机运算部件的设计

(4)移码:在补码的基础上取反符号位。

- 补充

  - 正数的原码补码和反码都相同

  - 补码再取补码等于源码

  - ±0的补码、移码相同

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值