第二章 进制(了解)

1. 编程四种涉及进制的表示方式:
对于整数,有四种表示方式:
二进制(binary):0,1,满2 进1。 以0b或0B开头
十进制(decimal):0-9,满10 进1。
八进制(octal):0-7,满8 进1。
十六进制(hex):0-9 及 A-F,满16 进1。 以0x或0X开头表示。此处的A-F不区分大小写。
如:0x21AF + 1 = 0X21B0

2. 二进制的使用说明:
2.1 计算机底层的存储方式:
所有数字在计算机底层都以二进制形式存在。
2.2 二进制数据的存储方式:
所有的数值,不论正负,底层都是以补码的形式存储
2.3 原码、反码、补码的说明:
正数:三码合一
负数:
原码:直接将一个数值换成二进制,最高位是符号位
负数的反码:是对原码按位取反,只是最高位(符号位)确认为1.
负数的补码:其反码加1

3. 进制间的转换

二进制与十进制间的转换方法(图文教程)
一、正整数的十进制转换二进制:
要点:除二取余,倒序排列
解释:将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取将除得的余数,即换算为二进制数的结果
例如把52换算成二进制数,计算结果如图:

52除以2得到的余数依次为:0、0、1、0、1、1,倒序排列,所以52对应的二进制数就是110100。
由于计算机内部表示数的字节单位都是定长的,以2的幂次展开,或者8位,或者16位,或者32位....。
于是,一个二进制数用计算机表示时,位数不足2的幂次时,高位上要补足若干个0。本文都以8位为例。那么:
(52)10=(00110100)2

二、负整数转换为二进制
要点:(正数除二取余,倒序排列)取反加一
解释:将该负整数对应的正整数先转换成二进制,然后对其“取补”,再对取补后的结果加1即可
例如要把-52换算成二进制:
1.先取得52的二进制:00110100
2.对所得到的二进制数取反:11001011
3.将取反后的数值加一即可:11001100
即:(-52)10=(11001100)2

三、小数转换为二进制
要点:(小数)乘二取整,正序排列
解释:对被转换的小数乘以2,取其整数部分(0或1)作为二进制小数部分,取其小数部分,再乘以2,又取其整数部分作为二进制小数部分,然后取小数部分,再乘以2,直到小数部分为0或者已经去到了足够位数。每次取的整数部分,按先后次序排列,就构成了二进制小数的序列
例如把0.2转换为二进制,转换过程如图:

0.2乘以2,取整后小数部分再乘以2,运算4次后得到的整数部分依次为0、0、1、1,结果又变成了0.2,
若果0.2再乘以2后会循环刚开始的4次运算,所以0.2转换二进制后将是0011的循环,即:
(0.2)10=(0.0011 0011 0011 .....)2
循环的书写方法为在循环序列的第一位和最后一位分别加一个点标注

四、二进制转换为十进制:

整数二进制用数值乘以2的幂次依次相加,小数二进制用数值乘以2的负幂次然后依次相加!

比如将二进制110转换为十进制:
首先补齐位数,00000110,首位为0,则为正整数,那么将二进制中的三位数分别于下边对应的值相乘后相加得到的值为换算为十进制的结果

如果二进制数补足位数之后首位为1,那么其对应的整数为负,那么需要先取反然后再换算
比如11111001,首位为1,那么需要先对其取反,即:-00000110
00000110,对应的十进制为6,因此11111001对应的十进制即为-6
换算公式可表示为:
11111001=-00000110
=-6

如果将二进制0.110转换为十进制:
将二进制中的三位数分别于下边对应的值相乘后相加得到的值为换算为十进制的结果

上一篇:golang安装、编译器选择


下一篇:Centos7 系统内核升级