BINARY

二进制

什么是二进制?

在计算机的世界里,只有0和1,也就是二进制。

进制有二进制、八进制、十进制、十六进制等。

十进制转换二进制或其他进制:

十进制转二进制

十进制的123转成二进制就是1111011,转成其他进制也是一样。

二进制

二进制是计算机采用的表示输子的方式,每个数位上只有0和1。

任何的整数一定可以采用二进制的方式来表示。

字节内部采用二进制方式记录数字,一个字节分成八段,每个分段有一个编号,最右边分段编号是0,向左逐渐递增。

相邻分段之间有2倍关系,某个分段的数字相当于2的编号次方。

二进制转十进制

把每个数位单独转换后把所有的转换结果求和。

01001110=2^6+2^3+2^2+2^1=64+8+4+2=78

 十进制转二进制

方法1:

(不舍用于处理大数字)先把十进制数字拆分成多个2的整数次方之和,然后对每个结果单独转换。

最后其他位补0。

方法2:

 除2取余,逆序余数;

 上面2中方法算出来的是二进制原码。

计算机字节里采用二进制补码记录数字。

所有非负整数,补码和原码一样。

八进制

把二进制表示方式的所有数位从右向左每三个数位分成一组,每组用一个0到7之间的数字代替可得到八进制表示方式。

每三个数位可以采用421方法把二进制转化成八进制

可以在程序中使用八进制表示数字,为了避免与十进制混淆,需要在八进制前面加(零)。

%可以作为八进制的占位符。

 十六进制

 所有数位从右向左每四个数位分一组,每组用一个字母替换就得到对应的十六进制表式方式,先把每组转换成十进制,转换结果如果在0到9之间则用阿拉伯数字字符替换,否则同‘a’到‘f’这六个英文字母替换。

每四个数位可以采用8421方法把二进制转化成十六进制。

可以在程序中使用十六进制表示数字,但必须以0x做开头。

%x、%X可以作为十六进制数的占位符(%x输出a-f,%X输出A-F)。

负数二进制

 先计算出相反非负数的二进制。

把第一步的计算结果每个数位变成相反内容,然后再加一。

求:-5的二进制: 

5: 0000 0101
取反: 1111 1010 + 1
-5: 1111 1011

 方法算出来的是二进制补码,可以直接记录在字节中。

有符号的二进制补码最左边的数位叫做符号位,符号位是0表示正,1表示负,且符号位不能等同与正负号。

当把一个占地大的整数类型数据赋值给占地小的整数类型存储区时只会保留部分二进制数据,因此导致十进制表示方式发生变化。

当把一个占地小的整数类型赋值给占地大的整数数据类型存储区时要扩充二进制数位,在有符号位的情况下扩充出来的二进制里全是符号位的数值,无符号数据填充0.

ch = 44
num = 44
分析:300是整数占四个字节, 用二进制表示如下(ps: 只保留最右边的)
00000000 00000000 00000001 00101100
原文地址:https://www.cnblogs.com/wsnb8/p/11307789.html