进制转换、补码、求补、第一个程序

进制转换、补码、求补、第一个程序

1.进制转换

1.1整数的进制转换

1.1.1各进制转为10进制

123(10)=100+2*10+3*1

xyz(n)=x*n^2+y*n^1+z

例如

7B(16)=7*16+11=123

0000 1111(2)=1*2^3+1*2^2+1*2+1=15

1.1.2 各进制互相转换

例如123转为2进制

 

1.2浮点数的进制转换

1.2.1各进制转为10进制

 

12.75[8]=1*8+2+7*8^(-1)+5*8^(-2)=10.953125[10]

1.2.2 各进制互相转换

小数部分0.953125(10) (小数部分乘R取整)

0.953125*8=7.625-----------7

0.625*8=5------------------5

0.75(8)

注意:有些浮点数转化进制会形成无限循环的情况,只能无限接近于浮点数。

例如:0.6转化为2进制

      0.6*2=1.2-------------------1

      0.2*2=0.4-------------------0

      0.4*2=0.8-------------------0

      0.8*2=1.6-------------------1

0.6=0.10011001............

所以当写程序的时候比较浮点数大小时应写为(f-0.6<0.000000001(自己确定要的精度)&&f-0.6>-0.000000001         f大于0时只需要写前半段。

2.求补和补码

2.1概念

注意:求补是一种运算

· 原码
    原码表示法最高位为符号位,该位为0表示正数,1表示负数。其余位表示数的绝对值。

· 反码
    对于一个带符号的数来说,正数的反码与其原码相同;负数的反码为其原码除符号位以外的各位按位取反。反码常用来做求补码过程中的中间形式。

· 补码
    正数的补码与其原码和反码相同;负数的补码是对它的原码除符号位以外各位取反,并在末位加1而得到,即为该数的补码加1。计算机内的数一般以补码形式表示。在补码中用(-128)D代替了(-0)D,注意:(-128)D没有相对应的原码和反码,(-128)D = (1000,0000)B。

· 求补运算
    求补运算不考虑符号位,对它的原码各位取反,并在末位加1而得到。对一个数进行求补运算所得的是该数相反数的补码。有一个方法可以快速进行求补运算,从右边数起,直到第一个1(包括其自身)之间的位值不变,其余位求反就是结果。

2.2求补运算推导

1字节的情况下 a-b

a+(100h-b)-100h

b+~b=ffh

b+~b+1=100h

~b+1=100h-b

a+~b+1-100h

得出结论~b+1=100h-b

3.第一个程序

#include<stdio.h>

int main(){

printf(“hello world”);

}

#inlude“stdio.h”与#include<stdio.h>

“”代表自己写的头文件<>代表系统自带的源文件

printf函数返回值是输出的个数,参数为可变参数。

1.编译a.c源文件

得到了a.obj文件编译源文件是将文件代码转化为二进制代码,然后link a.obj文件添加系统打开所需要的启动代码得到可执行a.exe文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值