c语言输出负数的二进制(C语言之正整数与负数的二进制转换)
为什么带符号的1字节最大表示(127),最小可以表示(-128),下面我们就来说一说关于c语言输出负数的二进制?我们一起去了解并探讨一下这个问题吧!
c语言输出负数的二进制
为什么带符号的1字节最大表示(127),最小可以表示(-128)
最左边的一位如果是1就代表的是负数,如果是0就是正数
(1000 0000)== -128
(0111 1111)== 127
带符号的1字节(unsigned char)如果用二进制表示十进制的5;
二进制(0000 0101) == 十进制 5;
那负5如何表示呢?//把每位按位取反加1;
先取反(1111 1010),再加1;
就是(1111 1011) == -5
带符号的类型如果表示正整数,左边最高位一定是0
带符号的类型如果表示负整数,如果不够位数就往左补1,左边最高位一定是1
#include<stdio.h>
int main (void)
{
unsigned int ch = 5;//用的是4字节的int类型
unsigned int ff = -5;
printf("正5的十六进制%#x\n",ch);
printf("负5的十六进制%#x\n",ff);
return 0;
}
//C语言没有二进制输出,所以就用十六进制给演示了
十六进制转二进制小技巧
十六进制内的数字表示(0,1,2,3,4,5,6,7,8,9,A,,B,C,D,E,F)
下面是4字节的二进制码
(1111 1011 1110 0000 1101 0001 1100 0010)
转换以后的16进制码
(F B E 0 D 1 C A)
4位二进制等于1个十六进制来计算会更容易理解
C语言中0X代表的是16进制输出
程序输出如下
正5的十六进制0x5
负5的十六进制0xfffffffb
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com