C语言之正整数与负数的二进制转换

C语言之正整数与负数的二进制转换最左边的一位如果是1就代表的是负数,如果是0就是正数。带符号的1字节如果用二进制表示十进制的5;带符号的类型如果表示正整数,左边最高位一定是0。

大家好,欢迎来到IT知识分享网。

为什么带符号的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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/87824.html

(0)
上一篇 2024-10-10 07:26
下一篇 2024-10-12 13:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信