C语言中的二进制、八进制、十进制、十六进制

一个字节分成八段,每段只能记录一个0或者1

要想把一个数字记录在一个字节中,就必须首先把这个

数字拆分成八个0或者1

采用一组0和1表示数字的方法叫做二进制

二进制表示方式中,每个位置有一个编号,最右边位置的

编号是0,向左以此递增

某个位置上的1代表的数字是2的位置编号次方

在二进制表示方式中,如果两个相邻位置上的内容一样,

则左边的数字是右边数字的2倍

(以上规则只适用于用二进制表示的非负数)

 

二进制数字加1时,把最右边的所有1都变成0,把最右边的0变成1

 

不停对数字除以2保留整数部分的操作,得到一组数字,其中每个数字在作除以2取余得到每个数位上的内容。把所有余数按找从后向前倒叙书写就得到转换结果。

 

负数十进制转换为二进制

1.得到负数的相反数

2.把第一步的结果转换成二进制

3.把第二步每个数位上的内容变成相反值

4.把第三步的结果加1

 

采用按位求反再加1的方法可以根据任何二进制数计算出相反的二进制数

 

有符号类型二进制最左边的数位叫做符号位

根据它可以知道数字的正负,如果符号位是0则数字是非负数,

如果符号位是1则数字是负数

 

负数的二进制转换成十进制

1.首先计算出相反数的二进制

2.把第一步的结果转换成十进制

3.根据第二步的结果再计算相反数

当把占地大的整数赋值给占地小的整数类型存储区的时候,只保留最后的二进制数位,这将导致数据丢失

 

 

当把占地小的有符号类型整数赋值给占地大的整数类型存储区时,扩展出来的二进制数位填充的都是符号位(不仅第一位是符号位,扩展出来的位数都是符号位)这样会保持十进制结果不变


得意关于计算机用补码表示负数,有规律:A=定+B

其中:

A:补码对应的无符号数

B:负数值

定:假设数据用8比特表示,则“定”为28=256

例如:-1的补码表示为A=定+B=256-1=255,即11111111

     -128的补码表示为A=定+B=256-128=128,即10000000

显然,也可以由补码值得出表示的负数值,B=A-定

     11111111对应的负数值是B=255-256=-1

 

把二进制从右向左每三个数位分成一组,每组用0到7之间的一个数字替代

这个结果叫做数字的八进制表示方式

二进制与八进制之间的转换没有正负之说,也就是说它们的转换规则是一样的

可以在程序中直接使用八进制方式表示数字,但必须以0(数字0)作为开头

也就是说0之后才是表示的八进制数字

可以采用%o(字母o)作为占位符,把数字的八进制表示方式打印在屏幕上

 

把二进制数字从右向左每四个数位分成一组,每组用一个字符替换

(用a到f这六个字母代表10到15)

可以在程序中使用十六进制方式表示数字,必须以0x(数字0,字母x)作为开头

可以用%x或者%X做占位符把十六进制表示方式打印在屏幕上

打印结果不是以0x作为开头的,为了避免和十进制表示的数字冲突,我们可以

自己将0x加在打印结果的开头

以%x作为占位符时,打印结果中英文字母都是小写的

以%X作为占位符时,打印结果中英文字母都是大写的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值