great的读音:关于C语言的补码

来源:百度文库 编辑:高校问答 时间:2024/04/28 12:11:04
19,原码用8位二进制是00010011
我想知道19的原码用8位二进制是怎么表示成00010011的
还有就是19用16位和32位是怎么表示的,这方面的知识谁能介绍下,谢谢啦

8bit(位)是一个Byte(字节).
2Byte(字节)是一个Word(字),16bit.
2Word(字)是一个DW(双字),32bit.
---------------------------------
二进制的每一个都有自己的权值。对于一个字节来讲,从左至右分别为128、64、32、16、8、4、2、1(发现规律了吧——乘2)
因为19=16+2+1,所以从右至左,第0位为1,第1位为1,第4位为1。
就得到了10011b
所以,如果用8位表示19当然就是00010011b
用16位表示就是0000000000010011b
用32位表示就是00000000000000000000000000010011b
--------------------------------------------------
至于你说的补码的问题,是因为在计算机中,为了存贮负数(要与正数和0分开,不能重码)而做的人为规定。
总之,你记住,计算机里存贮数都是用补码的形式。正数和0的补码永远都是自己,负数的补码就是它的绝对值按位取反,加1。
[0]补=00000000b
[1]补=00000001b
[2]补=00000010b
[3]补=00000011b
----------------
[-0]补=00000000b
[-1]补=11111111b(注:-1的绝对值为1,按位取反后为11111110b,加1就得到了-1的补码:11111111b)
[-2]补=11111110b
[-3]补=11111101b

19用十六进制表示为13h,用二进制表示就是00010011b

00010011 的意思是:从右到左 1*1(2的0次放)+1*2(2的1次放)+0*4(2的2次放)+0*8+1*16=19
19的16位:00000000 00010011
32位:00000000 00000000 00000000 00010011
00010011的补吗:计算如下:
11101100 (这个是反码)
11101101 (反码+1就是补吗)

从右到左分别是2的0次 1次 3次。。。方
1×1+1×2+0×4+0×8+1×16+0×32+0×64=19(一般八位二进制最左边那位是符号位,0为正,1为负
16和32进制一样,就是改为是16和32的次数

二进制就是用0和1表示.
比如01010表示的就是从右向左看:
2的零次方有吗?2的一次方有吗?2的3次方有吗?2的四次方有吗?2的五次方有吗? 没有就是0,有就是1.
所以19就是:00010011
十六位和32位就在前面补零.
补码就是"取反加一"
00010011 取反
11101100 加一等于
11101101

建议楼主看一下关于十进制和二进制、八进制、十六进制之间转换的文章。