C语言学习笔记(八)——其他计算机知识



第八章                          其它计算机知识

 

 

进制转换:

         十进制转r进制:除r取余,直至商0,余数倒序排列。

         r进制转十进制:mrn次方(mr进制每一位上的数字)。

         推广:

         高进制x转低进制rx>r,除r取余,直至商0,余数倒序排列。

         低进制r转高进制xr<xmrn次方(mr进制每一位上的数字)。

 

 

【补码】

         原码

                   也叫 符号-绝对值码

                   最高位0表示正,1表示负,其余二进制位是该数字的绝对值的二进制位,才为有效数位。

                   原码简单易懂,但运算复杂。

         反码

                   反码为原码的所有数位取反,即10互换。

         移码

                   移码表示数值平移n位,n称为移码量

                   移码主要用于浮点数的阶码的存储

         补码

                   已知十进制求二进制补码

                            求正整数的二进制制

                                     2取余,直至商为0,余数倒序排列。即直接转为二进制,前面用0来补齐位数。

                            求负整数的二进制

                                     先求该负数绝对值的补码,然后将所有位取反(包括前面补齐用的0全取反变为1),末尾加1

                            0的二进制全为0

                   已知二进制补码求十进制

                            如果首位是0,则表明是正整数,直接转为十进制即可。

                            如果首位是1,则表明是负整数,将二进制补码所有位取反(包括前面补齐用的1全取反变为0),末                                 尾加1,所得数即为该负数的绝对值,前加负号即可。

                   小技巧:当一个数的二进制码前全为用1补齐时,该数为负数,取反加1即为该数绝对值。

         一个int类型变量(4字节)可存储的数字范围是多少?

                   最大正数用十六进制表示为:7FFFFFFF

                   绝对值最大的负数用十六进制表示为:80000000

                                               8位二进制数所代表的十进制 示意图】

                   二进制                                                                      十进制

                   00000000                           ------                             0

                   00000001                           ------                             1

                   ....   ....                   ------                             ...

                   01111111                           ------                             127

    正负分隔线--------------------------------------------------------------------

                   10000000                           ------                             -128 负数计算时,取反加1

                   10000001                           ------                             -127

                   10000010                           ------                             -126

                   ....  ....                    ------                             ...

                   11111111                           ------                             -1

                   在计算机中,首位被当作正负号而不是有效数字。

         规律:

                   最大正数的二进制代码为:0111 1111 1...

                   最小负数的二进制代码为:1000 0000 0...

         当存储范围不足而溢出时,前面字节的数据会丢失,被保留的首位有效数字0(或1)会被当作正负号来处理。

                   charch = 129; //129默认为int类型,前面以0补齐,赋值给1个字节变量时,前面3个字节数据丢失。

                   printf("%d\n",ch);   ch = -127 //这就是输出为-127的原因。

 

 

The end

 2013241:03:32

李峰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值