一个字节分成八段,每段只能记录一个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作为占位符时,打印结果中英文字母都是大写的